Runcible Asked: 2009-07-24 13:20:56 +0800 CST2009-07-24 13:20:56 +0800 CST 2009-07-24 13:20:56 +0800 CST Linux:如何更改一堆文件的扩展名? 772 我有一个充满以 .xxx 结尾的文件的目录。( Apple.xxx, Orange.xxx, Bannana.xxx) 我想将它们的扩展名更改为 .yyy。( Apple.yyy, Orange.yyy, Bannana.yyy) 使用基本 shell 命令完成此任务的最快方法是什么? linux scripting shell 4 个回答 Voted Best Answer Chad Huneycutt 2009-07-24T13:25:19+08:002009-07-24T13:25:19+08:00 看一下重命名命令:rename .xxx .yyy *.xxx Kyle Brandt 2009-07-24T13:27:20+08:002009-07-24T13:27:20+08:00 for i in *.xxx; do mv "$i" "${i%.*}.yyy" done "${i%.*}" 中的百分号表示使用百分号后面的glob模式,将其应用于变量 i 的值,并从该值的尾部删除可能的最短匹配项。这称为参数/变量扩展,有很多用途。您也可以使 glob 成为可能的最长匹配项,或者也可以从一开始就进行 glob 匹配。 这篇 Linux Journal 文章都是关于参数扩展的。 它放在双引号中,这样如果文件名中有空格并且 IFS 变量设置为包含空格(标准),文件名仍将作为一个参数传递给 mv。 ThorstenS 2009-07-24T13:29:57+08:002009-07-24T13:29:57+08:00 安装mmv然后执行以下操作: mmv -r "*.xxx" "#1.yyy" thelsdj 2009-07-24T23:02:28+08:002009-07-24T23:02:28+08:00 已经有很多答案了,但我会添加我自己的。 for i in *.xxx; do mv "$i" "`basename $i .xxx`.yyy" done
看一下重命名命令:
rename .xxx .yyy *.xxx
"${i%.*}" 中的百分号表示使用百分号后面的glob模式,将其应用于变量 i 的值,并从该值的尾部删除可能的最短匹配项。这称为参数/变量扩展,有很多用途。您也可以使 glob 成为可能的最长匹配项,或者也可以从一开始就进行 glob 匹配。 这篇 Linux Journal 文章都是关于参数扩展的。
它放在双引号中,这样如果文件名中有空格并且 IFS 变量设置为包含空格(标准),文件名仍将作为一个参数传递给 mv。
安装mmv然后执行以下操作:
已经有很多答案了,但我会添加我自己的。