我怎样才能使用terminal批量重命名文件?

我有一组文件,所有这些nnn.MP4.mov我怎么才能重命名它们,使它只是nnn.mov

首先,执行下面的操作(不会重命名任何文件):

 for file in *.mov do echo mv "$file" "${file/MP4./}" done 

如果一切看起来不错,从第三行删除echo实际上重命名文件。

我只是成功地使用Automator(我第一次打扰),它运作得非常好。 我把自动化作为一项服务保存下来。 花了大约10秒钟才能轻松实现重复使用:

  1. 打开Automator。
  2. 作为文件types,select“服务”。
  3. 更改服务将选定的“文本”接收到“文件和文件夹”。
  4. 考虑将“任何应用程序”改为Finder。
  5. 在边栏中,select“文件和文件夹”(位于库下),然后从列出的操作中,在中间栏中将“重命名Finder项目”拖到右侧,并将其放在“拖动操作或文件” “
  6. 将刚刚添加的操作从“添加date或时间”更改为“顺序”。
  7. 点击操作底部的“选项”,然后选中“当工作stream程运行时显示此操作”选项。
  8. 点击“CMD + S”,将服务保存为“replace文字”。
  9. 完成!

现在,您可以在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,则会被覆盖,所以仔细使用它^^