bash脚本 - 有选择地处理带空格的文件名

时间:2010-09-07 13:23:22

标签: bash filenames spaces

我有一个目录,文件名称为“a b c.jpg”,“d e f 0.jpg”,“g h i.jpg”

我需要一个脚本让所有以“ 0.jpg”结尾的文件变为“ _0.jpg”

因此,在上面的例子中,第二个文件应该变成“d e f_0.jpg”

3 个答案:

答案 0 :(得分:5)

我认为您的问题应该是您希望以“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(no-clobber)或-i(互动)作为mv(1)的选项。

答案 1 :(得分:1)

rename工具可能就是您所需要的。

答案 2 :(得分:-3)

ls -1 | grep .jpg | awk -F "." '{print $1 "_0." $2}'