鍍金池/ 問答/C#  Linux/ centos 如何批量替換文件名

centos 如何批量替換文件名

文件夾下面的文件太多,無法直接用 rename aa bb *.jpg

執(zhí)行就會(huì)提醒:-bash: /usr/bin/rename: Argument list too long

百度找到的方法

for i in `ls *.jpg`
do
    rename "aa" "bb" $i
done
find . -name *.jpg -exec rename aa bb {} +

出錯(cuò):-bash: /bin/find: Argument list too long

上面方法也都不能用,請(qǐng)教懂的同學(xué)指點(diǎn)一下,如何快速批量替換文件夾下面的文件名,大概有幾十萬個(gè)文件吧。

回答
編輯回答
悶油瓶

ls *.jpg 會(huì)列舉出所有的 .jpg 文件。

find . -name *.jpg 因?yàn)闆]有用單引號(hào)包圍 *.jpg,因此被 shell 自動(dòng)擴(kuò)展成所有的 .jpg 文件。

注意, find xxx -exec xxx {} + 將會(huì)對(duì)多個(gè)文件執(zhí)行一次操作,而 find xxx -exec xxx ; 是逐個(gè)文件操作。詳細(xì)用法請(qǐng)查 man find。

參考

find -type f -name '*.jpg' -execdir rename aa bb {} \;
2017年3月10日 23:54
編輯回答
雅痞
find -name '*.jpg' -print0 | xargs -0 rename 'aa' 'bb'

隨手寫的,未測試,不過應(yīng)該是OK的

2017年1月26日 11:03