2011-03-22 153 views
54

我有一组文件,所有这些文件nnn.MP4.mov我怎么能重命名它们,以便它只是nnn.mov我如何批量使用终端重命名文件?

+1

安装muCommander。它有Total Commander风格批量重命名器。为什么要浪费时间在那100个字符的吹嘘批量命令? – Nakilon 2013-08-17 22:34:28

+0

@Nakilon因为学习的命令行对投资 – 2017-04-25 13:14:50

回答

81

首先,做一个预演(实际上不会重命名任何文件)具有以下:

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

如果一切正常,请从第三行删除echo以实际重命名文件。

+18

无法弄清楚为什么这不起作用......有输出,它看起来像是,但它实际上并没有做任何事情。那么我终于明白,你需要删除ECHO语句才能真正实现它(在OSX 10.7上)。所以,如果你保留echo语句,那么你可以测试它,看看重命名是否会像你想要的那样工作,然后删除echo以使其工作。所以相当于从Windows的ren * -hd.png * .png是:对于* .png中的文件 做 mv“$ file”“$ {file/-hd /}” done – jsherk 2012-07-12 01:10:07

+2

运行您需要的脚本: 1.将其保存在'rename.sh'文件中; 2.使其可执行'chmod 755 rename.sh'; 3.从当前文件夹中启动它,在该文件夹中有要重命名的文件和shell脚本'。/ rename.sh'; 4.如果结果很好,请从脚本中移除'echo'并重新启动它。 我需要将扩展​​名添加到文件组。所以我在脚本中的动作是这样的:'mv“$ file”“$ {file} .jpeg”' – 2016-09-10 08:17:12

0
ls -1 *.MP4.mov | while read f; do mv -i "$f" "$(basename \"$f\" .MP4.mov)"; done 

编辑:完全重写。

+0

它不断要求输入...更大的回报 – 2011-03-22 16:04:47

+0

'> > > > > > >' – 2011-03-22 16:05:12

+0

如果你想要做什么,删除 - 我 – 2011-03-22 16:05:19

0
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会被改写,所以用它小心^^

33

我刚刚成功地使用了Automator(第一次打扰),它的工作非常好。我将自动化保存为服务。花了大约10秒钟才能使某些东西容易重复使用:

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

现在您可以在Finder中右键点击任何选项,进入服务菜单并选择“替换文本”,填写您希望如何更改或替换文本,然后单击“继续”应用配置的更改。

+0

谢谢!上述方法由于某种原因不起作用。 – Norris 2012-04-09 23:33:51

+0

什么或哪里或什么时候失败?根本没有错误信息? – Johan 2012-05-29 09:33:12

+0

我低估了它,因为问题有“终端”标签。 – v42 2013-12-13 17:11:42

10

要测试打印操作:

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 
+1

测试打印选项赢得了我的投票。谢谢! – 2014-05-04 05:32:36

+0

耶这工作!谢谢。 – 2014-12-19 14:04:46

+0

感谢您的单线解决方案 – semihcosu 2017-09-12 08:38:54

1
for i in `ls *png`;do echo mv $i "${i%%.*}"@xx."${i##*.}";done 
11
for n in *.MP4.mov 
do 
    mv $n $(echo $n | sed -e 's/.MP4//') 
done 

这将工作,即使在没有参数替换真的老了壳,至少我的眼睛更可读。

+0

我已经将它应用到名称中使用'_MG_'的文件,我需要通过在中间用'*'和'*'进行修改来完美更改为'-IMG_'。锻炼了魅力。谢谢! – 2014-10-01 01:53:11

4

在Mac OSX上,你可以通过自制安装rename命令:brew install rename

然后可以重命名使用查找/从该文件夹替换命令行:

rename 's/\.MP4\././' * 

你还可以看到更多的选择使用man rename

1

vimv允许您使用Vim的文本编辑功能重命名多个文件。

进入vimv打开一个列出所有文件的Vim窗口,您可以进行模式匹配,视觉选择等来编辑名称。在你退出Vim后,这些文件将被重命名。

[声明:我是该工具的作者]