Macos 如何使用终端批量重命名文件?
我有一组文件,它们都Macos 如何使用终端批量重命名文件?,macos,shell,terminal,file-rename,batch-rename,Macos,Shell,Terminal,File Rename,Batch Rename,我有一组文件,它们都nnn.MP4.mov。我怎样才能将它们重命名为nnn.mov ls -1 *.MP4.mov | while read f; do mv -i "$f" "$(basename \"$f\" .MP4.mov)"; done 编辑:完全重写 for i in *; do j=`echo $i | cut -d . -f 1`; j=$j".mov"; mv $i $j; done 这将剪切第一个点之前的所有内容并附加.mov 但是,如果某些文件是hi.2.mov和
nnn.MP4.mov
。我怎样才能将它们重命名为nnn.mov
ls -1 *.MP4.mov | while read f; do mv -i "$f" "$(basename \"$f\" .MP4.mov)"; done
编辑:完全重写
for i in *;
do j=`echo $i | cut -d . -f 1`;
j=$j".mov";
mv $i $j;
done
这将剪切第一个点之前的所有内容并附加.mov
但是,如果某些文件是hi.2.mov和hi.1.mov,则其中一个文件将被覆盖,因此请小心使用它^^首先,使用以下命令进行试运行(实际上不会重命名任何文件):
for file in *.mov
do
echo mv "$file" "${file/MP4./}"
done
如果一切正常,请删除第三行中的
回音
,以实际重命名文件。我刚刚成功地使用了Automator(我第一次遇到麻烦),它工作得非常好。我将自动化保存为服务。制造出易于重复使用的产品大约需要10秒钟:
现在,您可以右键单击Finder中的任何选择,转到“服务”菜单并选择“替换文本”,填写更改或替换文本的方式,然后单击“继续”应用配置的更改。要测试打印操作:
for file in *.MP4.mov; do j=`echo $file | cut -d . -f 1`;j=$j".mov";echo mv \"$file\" \"$j\"; done
要使其发挥作用:
for file in *.MP4.mov; do j=`echo $file | cut -d . -f 1`;j=$j".mov";mv "$file" "$j"; done
即使在没有参数替换的非常旧的Shell上,这也能起作用,至少在我看来,它更容易阅读。在mac OSX上,您可以通过自制安装
rename
命令:brew install rename
然后,可以在命令行上使用“查找/替换”从该文件夹重命名:
rename 's/\.MP4\././' *
您还可以使用手动重命名查看更多选项允许您使用Vim的文本编辑功能重命名多个文件
输入vimv将打开一个Vim窗口,其中列出所有文件,您可以进行模式匹配、可视化选择等操作来编辑名称。退出Vim后,文件将被重命名
[免责声明:我是该工具的作者]OSX有一个重命名文件…
上下文菜单项,当您在Finder中选择两个或多个文件时会调用该菜单项。提供与上面自动回答相同的功能。尽管Automator为您提供了一些工具,您可以根据自己的意愿进行进一步的操作
(我知道OP要求使用终端,但其他33个类似Automator response)如果它做了你想做的事情,删除-ii意味着,它认为应该有一条线路的延续。它所做的是将它重命名为“nnn.MP4.mov”。mov
无法找出这不起作用的原因。。。有输出,看起来是这样,但实际上什么也没做。我最终发现,您需要删除ECHO语句,才能让它真正执行某些操作(无论如何,在OSX 10.7上)。因此,如果您保留了echo语句,那么您可以测试它,以查看重命名是否能够像您所希望的那样工作,然后删除echo以使其工作。因此,与ren*-hd.png*.png的Windows等价的是:对于*.png中的文件,请执行“$file”“${file/-hd/}”doneto以运行所需的脚本:1。保存在rename.sh
文件中;2.使其可执行chmod 755 rename.sh
;3.从当前文件夹启动它,您可以在其中重命名文件和shell脚本/rename.sh
;4.如果结果良好,请从脚本中删除echo
,然后再次启动它。我需要向文件组添加扩展名。因此,我在scrip中的操作如下:mv“$file”“${file}.jpeg”
这是一个脚本,需要创建为文件,然后正确运行?线索?作为单行cmd运行,如下所示:用于*.mov中的文件;执行echo mv“$file”“${file/MP4./}”;完成
,代码>起作用。安装muCommander。它具有Total Commander样式的批重命名器。为什么要把时间浪费在那该死的100个字符的Mindblawing批处理命令上?@Nakilon因为学习命令行有更大的投资回报。我否决了它,因为这个问题有“终端”标签。答案很好,即使它不是OP要求的。欢迎任何让我学习Automator的借口:-)顺便说一句,它不适用于文件夹,但它适用于多个选定文件。非常好!谢谢你,太棒了!不要在意手术!你不是说从“添加时间和日期”改为“替换文本”吗?我已经把这个应用到了使用<代码> MGY<代码>的文件中,我需要通过修改<代码> **/COD>和一个中间的<代码> */代码>来完美地更改为<代码> -img> 。他很有魅力。非常感谢。谢谢你的单线解决方案
for n in *.MP4.mov
do
mv $n $(echo $n | sed -e 's/.MP4//')
done
rename 's/\.MP4\././' *