我怎样才能使用terminal批量重命名文件?
我有一组文件,所有这些nnn.MP4.mov
我怎么才能重命名它们,使它只是nnn.mov
?
首先,执行下面的操作(不会重命名任何文件):
for file in *.mov do echo mv "$file" "${file/MP4./}" done
如果一切看起来不错,从第三行删除echo
实际上重命名文件。
我只是成功地使用Automator(我第一次打扰),它运作得非常好。 我把自动化作为一项服务保存下来。 花了大约10秒钟才能轻松实现重复使用:
- 打开Automator。
- 作为文件types,select“服务”。
- 更改服务将选定的“文本”接收到“文件和文件夹”。
- 考虑将“任何应用程序”改为Finder。
- 在边栏中,select“文件和文件夹”(位于库下),然后从列出的操作中,在中间栏中将“重命名Finder项目”拖到右侧,并将其放在“拖动操作或文件” “
- 将刚刚添加的操作从“添加date或时间”更改为“顺序”。
- 点击操作底部的“选项”,然后选中“当工作stream程运行时显示此操作”选项。
- 点击“CMD + S”,将服务保存为“replace文字”。
- 完成!
现在,您可以在Finder中右键单击任何选项,进入服务菜单并select“replace文本”,填写您希望如何更改或replace文本,然后单击“继续”以应用configuration的更改。
for n in *.MP4.mov do mv $n $(echo $n | sed -e 's/.MP4//') done
即使在没有参数replace的真正的老贝壳上,这也是可行的,至less我的眼睛是可读的。
要testing打印操作:
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
在Mac OSX上,您可以通过Homebrew brew install rename
rename
命令: brew install rename
然后,您可以在命令行上使用该文件夹中的查找/replace进行重命名:
rename 's/\.MP4\././' *
你也可以看到更多的select使用man rename
。
for i in `ls *png`;do echo mv $i "${i%%.*}"@xx."${i##*.}";done
vimv让你使用Vim的文本编辑function重命名多个文件。
进入vimv打开一个列出所有文件的Vim窗口,你可以进行模式匹配,视觉select等来编辑名称。 在你退出Vim后,文件将被重命名。
[免责声明:我是该工具的作者]
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,则会被覆盖,所以仔细使用它^^