重命名两点之间的文件名

乍得

我正在寻找一种通过删除两点之间的文本来重命名一批视频的方法。具体来说,我想将第6个字符之后的所有内容删除到最后一个“ LabelMe--”。

0001--LabelMe--A005_01241110_C001--LabelMe-- --Interview--Man in library.mov

0002--LabelMe--A005_01241110_C002--LabelMe-- --Broll--Man looking at books.mov

0003--LabelMe--A005_01241111_C003--LabelMe-- --Broll--messed up--LabelMe-- --Broll--Sitting at table.mov

我正在尝试使用Apple的Automator Services进行此操作。右键单击一堆文件,然后选择服务以清理名称。我找到了一段代码,但不确定我是否正确使用了它。

for f in "$@"
do 
    echo sed -e 's/\(--LabelMe).*\(LabelMe--)/\1\2/'
done

在此处输入图片说明

伊尔卡楚

这个网站上有很多关于使用这样的shell循环重命名文件的问题,还有一些关于为此使用的问题sed(例如thisthis

您将需要sed使用管道将文件名传递给,并使用命令替换来捕获结果,因此如下所示:

mv "$f" "$(echo "$f" | sed -e '...' )"

sed您使用命令需要一些修正:对于一个命令,您引用了左括号,但没有引用右括号,因此无法进行分组。另外,我不确定您为什么要将代码LabelMe段放回文件名。如果要删除它们,只需跳过分组和\N引用:

's/--LabelMe.*LabelMe--//'

因此,完整的:

for f in "$@"
do 
    mv "$f" "$(echo "$f" | sed -e 's/--LabelMe.*LabelMe--//' )"
done

另一种方法是使用外壳程序的参数替换执行相同的操作。替换${par/pattern/replacement}是非标准的,但在许多shell中都支持:

for f in "$@"
do 
    mv "$f" "${f/--LabelMe*LabelMe--/}"
done

(请注意,这不是正则表达式,因此“任何内容”的语法都是*,而不是.*

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

重命名现有文件名

来自分类Dev

Bash oneliner重命名文件名

来自分类Dev

重命名文件夹中的文件名-Python

来自分类Dev

通过比较两个bash / sed文件夹中的文件名来重命名文件

来自分类Dev

重命名文件夹以匹配内部文件名

来自分类Dev

inotifywait-重命名时获取新旧文件名

来自分类Dev

Bash重命名具有重复文件名的文件

来自分类Dev

Excel VBA重命名文件名

来自分类Dev

如何重命名(太长)文件名

来自分类Dev

PowerShell重命名多个文件,文件名的特定部分

来自分类Dev

通过修剪文件名末尾的'\ n'重命名文件

来自分类Dev

cp文件并根据旧文件名重命名?

来自分类Dev

重命名上载的文件名,JSP

来自分类Dev

重命名现有文件名

来自分类Dev

根据文件名在python中重命名文件

来自分类Dev

剥离文件名并重命名

来自分类Dev

将隐藏文件重命名为它们的文件名,..(双点)

来自分类Dev

如何通过在Windows中的文件名之间添加通用名来重命名多个文件?

来自分类Dev

根据包含的文件名批量重命名zip文件

来自分类Dev

Bash:重命名文件名开头

来自分类Dev

使用bash在连字符之间批量重命名文件名

来自分类Dev

重命名具有不可读文件名的文件

来自分类Dev

Shell - 如何重命名文件名中间的文件?

来自分类Dev

从文件名重命名文件夹 [脚本]

来自分类Dev

重命名文件夹中的文件名

来自分类Dev

为重命名清理文件名

来自分类Dev

在 PowerShell 中重命名文件名

来自分类Dev

重命名文件名python

来自分类Dev

根据现有文件名重命名文件