我有一个目录,里面全是以 .xxx 结尾的文件。(Apple.xxx
,,) Orange.xxx
Bannana.xxx
我想将它们的扩展名更改为 .yyy。(Apple.yyy
,,)Orange.yyy
Bannana.yyy
使用基本 shell 命令完成此操作的最快方法是什么?
答案1
看一下重命名命令:rename .xxx .yyy *.xxx
答案2
for i in *.xxx; do
mv "$i" "${i%.*}.yyy"
done
“${i%.*}”中的百分号表示使用全局百分号后面的模式,将其应用于变量 i 的值,并从该值的尾部删除最短的可能匹配。这称为参数/变量扩展,用途广泛。您还可以使 glob 成为最长的可能匹配,或者使 glob 从一开始就匹配。 这篇 Linux Journal 文章都是关于参数扩展。
它被放在双引号中,这样如果文件名中有空格并且 IFS 变量设置为包含空格(常态),则文件名仍将作为一个参数传递给 mv。
答案3
安装韓國然后执行以下操作:
mmv -r "*.xxx" "#1.yyy"
答案4
已经有很多答案了,但我会添加我自己的答案。
for i in *.xxx; do
mv "$i" "`basename $i .xxx`.yyy"
done