Linux:如何改变一堆文件的扩展名?

我有一个目录充满了以.xxx结尾的文件。 ( Apple.xxxOrange.xxxBannana.xxx

我想将其扩展名更改为.yyy。 ( Apple.yyyOrange.yyyBannana.yyy

使用基本的shell命令完成这个最快的方法是什么?

看看重命名命令: rename .xxx .yyy *.xxx

  for i in *.xxx; do mv "$i" "${i%.*}.yyy" done 

“$ {i%。*}”中的百分号表示使用百分号后面的glob模式,将其应用于variablesi的值,并从该值的尾部删除最短可能的匹配。 这叫做参数/variables扩展,并有很多用途。 你也可以做到这一点,所以glob是最长的匹配或从一开始就进行glob匹配。 这篇Linux Journal文章是关于参数扩展的。

它被放在双引号中,这样如果文件名中有空格并且IFSvariables被设置为包含空格(标准),文件名仍然会作为一个parameter passing给mv。

安装mmv ,然后执行此操作:

 mmv -r "*.xxx" "#1.yyy" 

已经有一堆答案,但我会加我自己的。

 for i in *.xxx; do mv "$i" "`basename $i .xxx`.yyy" done