2011-10-27 66 views
1

我就以下問題幫助重命名文件和文件夾: batch rename files with ids intact批一次

它是如何在一組重命名特定文件一個很好的例子,但我想知道如果有一個類似的腳本我可以使用做到以下幾點:

  1. 我有一個根目錄中的一組嵌套的文件夾和文件包含[myprefix_foldername]和[myprefix_filename.ext]
  2. 我想重命名所有的文件夾文件到[文件夾名]和[文件名.ext]

我可以使用類似的方法來找到上面的帖子嗎?

謝謝! jml

回答

1

是的,很容易與find

find rootDir -name "myprefix_*" 

這會給你的所有文件和文件夾列表中rootDirmyprefix_開始。從那裏,這是一個短跳轉到批量重命名:

find rootDir -name "myprefix_*" | while read f 
do 
    echo "Moving $f to ${f/myprefix_/}" 
    mv "$f" "${f/myprefix_/}" 
done 

編輯:IFS贊成while read刪除:每http://www.cyberciti.biz/tips/handling-filenames-with-spaces-in-bash.html

編輯2加IFS

編輯3:由於不中指出的那樣,你可能需要改變while read fwhile read -d $'\n' f如果你的Bash版本仍然不喜歡它。

+0

如果文件夾名稱中有空格,該怎麼辦?在這種情況下它似乎失敗了......如果你需要更多細節,請告訴我。 – jml

+0

我看不出爲什麼會失敗。你記得把引號放在'$ f'和'$ {f/myprefix _ /}'嗎?讓我看看它是如何失敗的。 – Chriszuma

+0

回聲失敗...我想先檢查一下。 – jml