当前位置: 技术问答>linux和unix
求一个批量修改文件名的SHELL
来源: 互联网 发布时间:2017-05-25
本文导语: 当前文件夹下有如下图片文件 /img/H1016D1.jpg /img/H1016D12.jpg /img/H1016D123.jpg /img/H1016D1234.jpg /img/H1016D12345.jpg /img/H1001D1.jpg /img/H1002D12.jpg /img/H1003D123.jpg 需要将 开头是 H1016D的jpg图片名批量改为 /img/H1016D00001.jpg /img/H1016D000...
当前文件夹下有如下图片文件
/img/H1016D1.jpg
/img/H1016D12.jpg
/img/H1016D123.jpg
/img/H1016D1234.jpg
/img/H1016D12345.jpg
/img/H1001D1.jpg
/img/H1002D12.jpg
/img/H1003D123.jpg
需要将 开头是 H1016D的jpg图片名批量改为
/img/H1016D00001.jpg
/img/H1016D00012.jpg
/img/H1016D00123.jpg
/img/H1016D01234.jpg
/img/H1016D12345.jpg
/img/H1001D1.jpg
/img/H1002D12.jpg
/img/H1003D123.jpg
其他图片不改,也就是说将 H1016D的jpg图片后面的数字用0来补齐5位。
/img/H1016D1.jpg
/img/H1016D12.jpg
/img/H1016D123.jpg
/img/H1016D1234.jpg
/img/H1016D12345.jpg
/img/H1001D1.jpg
/img/H1002D12.jpg
/img/H1003D123.jpg
需要将 开头是 H1016D的jpg图片名批量改为
/img/H1016D00001.jpg
/img/H1016D00012.jpg
/img/H1016D00123.jpg
/img/H1016D01234.jpg
/img/H1016D12345.jpg
/img/H1001D1.jpg
/img/H1002D12.jpg
/img/H1003D123.jpg
其他图片不改,也就是说将 H1016D的jpg图片后面的数字用0来补齐5位。
|
for f in H1016D[0-9]*; do
ff=${f#H1016D}
mv $f `printf H1016D%05d.jpg ${ff%.jpg}`
done
Please revise accordingly
|
ls -1 ./img/* | sed -n 's/.*(./img/H1016D)([0-9]+)(.jpg).*/1 2 3/gp' | awk '{printf("mv %s%s%s %s%05d%sn",$1,$2,$3,$1,$2,$3)}' | sh
测试了一下,我提供上一条的不显示路径,这条应该ok,2楼的方法很好,比正则简单,楼主要注意路径