使用bash:
for i in *; do if [[ $i =~ (image_)([0-9]{1,2})(\.jpg) ]]; then printf -v num "%03d" "${BASH_REMATCH[2]}"; echo mv -v "$i" "${BASH_REMATCH[1]}${num}${BASH_REMATCH[3]}"; fi; done
如果一切正常,刪除echo
。
測試與那些文件名的目錄:
image_100.jpg
image_101.jpg
image_10.jpg
image_11.jpg
image_1.jpg
image_2.jpg
image_334.jpg
image_335.jpg
image_3.jpg
創建的命令:
mv -v image_10.jpg image_010.jpg
mv -v image_11.jpg image_011.jpg
mv -v image_1.jpg image_001.jpg
mv -v image_2.jpg image_002.jpg
mv -v image_3.jpg image_003.jpg
結果:
image_001.jpg
image_002.jpg
image_003.jpg
image_010.jpg
image_011.jpg
image_100.jpg
image_101.jpg
image_334.jpg
image_335.jpg
也許你的工具,只要使用順序給出?例如,如果您將它作爲'sometool image * .jpg'調用,那麼您可以改爲'sometool image_ {1..335} .jpg'。 –
http://stackoverflow.com/questions/9896070/pad-numerical-values-in-filename-with-three-digit-value-using-sed – bishop
@thatotherguy沒有工具只是期望工作目錄充滿了有序images:( – sweiler