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

Run*_*ble 4 scripting linux shell

我有一个充满以 .xxx 结尾的文件的目录。( Apple.xxx, Orange.xxx, Bannana.xxx)

我想将他们的扩展名更改为 .yyy。( Apple.yyy, Orange.yyy, Bannana.yyy)

使用基本 shell 命令完成此操作的最快方法是什么?

Cha*_*utt 14

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


Kyl*_*ndt 7

 for i in *.xxx; do 
     mv "$i" "${i%.*}.yyy"
 done
Run Code Online (Sandbox Code Playgroud)

"${i%.*}" 中的百分号表示使用百分号后面的glob模式,将其应用于变量 i 的值,并从该值的尾端删除可能的最短匹配项。这称为参数/变量扩展,有很多用途。您也可以使 glob 成为最长可能的匹配,或者也可以从一开始就使 glob 匹配。 这篇 Linux Journal 文章是关于参数扩展的。

它放在双引号中,这样如果文件名中有空格并且 IFS 变量设置为包含空格(规范),文件名仍将作为一个参数传递给 mv。