2014-07-15 76 views
1

我在許多子目錄中有幾十萬個文件。我試圖提取所有相關的圖像文件,使用像這樣的正則表達式:按順序查找多個文件,複製和重命名

find -E . -regex '.+\.ca/.+(\.gif|\.jpg|\.tif|\.jpeg|\.tiff|\.png|\.jp2|\.j2k|\.bmp|\.pict|\.wmf|\.emf|\.ico|\.xbm)' 

這找到文件。但是,我想將它們移動到newdir,並將它們命名爲:

1.png 
2.jpg 
3.ico 
4.pict 
5.png 

等等。我一直無法找到(a)保存各種擴展的方式; (b)在它們進來時重新命名它們。許多文件將是重複的,我會保留這些文件。非常感謝你的幫助。

+0

是否有一個原因,你想純粹在bash中做到這一點?我認爲你的生活會更容易,如果你試圖用Python這樣的代碼編寫代碼,並且適當調用bash命令,如上面的'find', – Phani

+0

@Phani大多隻是個人的安慰,儘管你可能有一個好點這裏。我正在下面運行Barmar的腳本,似乎到目前爲止工作。 :) –

+0

@Phani這並不足夠複雜,在python中「更容易」。 – BroSlow

回答

4
i=1 
find ... | while read filename; do 
    newname=$i.${filename##*.} 
    mv "$filename" newdir/"$newname" 
    i=$((i+1)) 
done