我有一个目录充满了以.xxx结尾的文件。 ( Apple.xxx
, Orange.xxx
, Bannana.xxx
)
我想将其扩展名更改为.yyy。 ( Apple.yyy
, Orange.yyy
, Bannana.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