我最近試圖通過一個目錄遞歸併將所有名爲file.jpg
的文件複製到newfile.jpg
與原始文件位於同一本地目錄中。如何使用bash在同一本地文件夾中創建文件的遞歸副本?
我找到了一個辦法,但有點麻煩,我有理由相信這可能不是最好的方法。我想在將它寫入腳本之前我會問。
這是我到目前爲止有:
cd top_of_source_dir
#copy all file.jpg and append 'newfile.jpg' to the name
find ./ -type f -name file.jpg -exec cp '{}' '{}newfile.jpg' \;
#rename the newly created files to 'newfile.jpg'
find ./ -type f -name 'file.jpgnewfile.jpg' -exec rename file.jpgn n '{}' \;
有沒有人有一個配方做,在源目錄中的一個迭代?
您可能希望'for f in * .jpg;確認echo「$ f」「new $ {f%。*}。jpg」;如果你確定輸出是正確的,將'echo'改爲'mv'。 – val0x00ff
@ val0x00ff這不會通過源目錄執行遞歸,是嗎?我的文件可以在源目錄中有幾個級別。 –
#雅克Gaudin,不,但它不是,但你可以做一些像'find ./ -type f -name'* .jpg'-exec bash -c'for f;做n =「new $ {f ## * /}」; echo「$ f」 - >「$ {f%/ *}/$ n」; done'_ {} +'如果你認爲結果是正確的,再次用'mv'代替'echo' – val0x00ff