开发者

bash scripting - selectively handle file names with spaces

开发者 https://www.devze.com 2023-01-14 22:48 出处:网络
I have a di开发者_高级运维rectory with the files names as \"a b c.jpg\", \"d e f 0.jpg\", \"g h i.jpg\"

I have a di开发者_高级运维rectory with the files names as "a b c.jpg", "d e f 0.jpg", "g h i.jpg"

I need a script to have all the files ending with "0.jpg" to become "_0.jpg"

So, in the above example the second file should become "d e f_0.jpg"


I think your question should read that you want files ending with " 0.jpg" to become "_0.jpg" (note the space in the first quotes). That makes sense with your example.

for i in *\ 0.jpg ; do
    mv -- "$i" "${i/ 0.jpg/_0.jpg}"
done

That is, for every file matching the pattern "* 0.jpg", rename it replacing " 0.jpg" with "_0.jpg"

Edit: For added safety, consider using -n (no-clobber) or -i (interactive) as an option to mv(1).


The rename tool might be what you need.


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

精彩评论

暂无评论...
验证码 换一张
取 消