【发布时间】:2011-04-09 05:03:20
【问题描述】:
我有一个目录,文件名为“a b c.jpg”、“d e f 0.jpg”、“g h i.jpg”
我需要一个脚本让所有以“0.jpg”结尾的文件变成“_0.jpg”
所以,在上面的例子中,第二个文件应该变成“d e f_0.jpg”
【问题讨论】:
我有一个目录,文件名为“a b c.jpg”、“d e f 0.jpg”、“g h i.jpg”
我需要一个脚本让所有以“0.jpg”结尾的文件变成“_0.jpg”
所以,在上面的例子中,第二个文件应该变成“d e f_0.jpg”
【问题讨论】:
rename 工具可能正是您所需要的。
【讨论】:
我认为您的问题应该是您希望以“0.jpg”结尾的文件变为“_0.jpg”(注意第一个引号中的空格)。你的例子是有道理的。
for i in *\ 0.jpg ; do
mv -- "$i" "${i/ 0.jpg/_0.jpg}"
done
也就是说,对于每个匹配模式“* 0.jpg”的文件,将其重命名为“0.jpg”替换为“_0.jpg”
编辑:为了增加安全性,请考虑使用-n(禁止破坏)或-i(交互式)作为mv(1) 的选项。
【讨论】:
mv -- "$i" 来保护以破折号开头的文件名。
ls -1 | grep .jpg | awk -F "." '{print $1 "_0." $2}'
【讨论】:
ls,切勿使用grep 匹配文件名,如果有更简单的内置解决方案,请不要使用外部工具。