2013-01-08 31 views
2

我想重命名許多文件(有些JPG和大量的PNG文件),我需要他們按順序編號的每個文件夾有這樣的結構:大規模重命名編號

.../folder01 
    file.png 
    file.jpg 
.../folder02 
    file.png 
    file.png 
    .......... 
.../folder05 
    file.png 
    file.png 

,我想像這樣:

.../folder01 
    0001.jpg 
    0002.png 
.../folder02 
    0003.png 
    0004.png 
    .......... 
.../folder05 
    0012.png 
    0013.png  

我該如何使用bash?

回答

2

這裏有一種方法:

find . \(-name '*.jpg' -o -name '*.png' \) -print | (i=0; while read f; do 
    let i+=1; mv "$f" "${f%/*}/$(printf %04d "$i").${f##*.}"; 
done) 
+0

非常感謝!這件作品太棒了!就一件事。在我測試的情況下(文件夾01 02 03),次要號碼在最後一個文件夾中: 01 - > 0006.png 0005.png和03 - > 0001.png 0002.png,我想要相反。 –

+1

添加'sort':'find' ...'-print |排序| (i = 0;'...並且這些文件在被編號之前將被排序,所以folder01會在folder02之前出現,等等 –

0

下面是使用的StringSolver的自動化工具的另一種方式:

mv folder01/file.jpg folder01/0001.jpg 
mv folder01/file.png folder01/0002.png 
mv 

需要第二個例子,因爲否則它會考慮使用數字重命名的所有文件在文件夾的名稱中。 最後兩行也可以在短短的一個縮寫,它執行的動作,並立即概括它:

mv -a folder01/file.png folder01/0002.png 

免責聲明:我是這個工作的學術目的的合着者,並在bash腳本工作渲染器。但是你已經可以測試系統了。