2014-02-06 105 views
0

我需要幫助創建腳本,該腳本將通過指定的目錄並重命名與名稱匹配的文件夾。在我的情況下,有些(/ Users /).bak附加到他們,我想要刪除。使用BASH重命名具有特定擴展名的文件夾

非常感謝您提供任何幫助。

+0

'find -type d -name'*(/ Users /).bak'-delete'。 – Wrikken

+0

'/用戶/'被追加?你一定是說它是前面路徑的一部分,不是嗎? –

+0

抱歉/用戶是該目錄並且附加了.bak。我正在尋找刪除任何與.bak擴展名。 – user3089044

回答

0

要與.bak擴展在子目錄刪除文件夾命名爲用戶

find /Users -type d -iname '*.bak' -print0 | xargs -0 rmdir 

如果文件夾空,則必須使用rm -rf代替

find /Users -type d -iname '*.bak' -print0 | xargs -0 rm -rf 

find查找文件夾名爲-type d以某種方式與.bak的擴展名-iname '*.bak'和這些名稱,以xargs,這收集了無MES和刪除它們rmdirrm -rf

更新:

要刪除的擴展名(重命名文件夾),您可以使用while read環和mv

find /Users -type d -iname '*.bak' | while read d; do 
    t=$(echo $d | sed -e 's/\.bak$//') 
    mv $d $t 
done 
+0

我不想刪除目錄,我只是想刪除擴展名。例如:test.bak重命名爲測試 – user3089044

+0

這很好。我添加了-maxdepth,因爲我只需要/ Users。非常感謝你的幫助! – user3089044

1
find /Users -type d -iname '*.bak' | while read d; do 
    mv "$d" "${d%.bak}" 
done 

記得把文件名用引號括起來,以防名稱中有空格。

${var%stuff}:從前面

這兩個成語除去水珠stuff,在循環使用時,是非常強大的,並且工作在任何Bourne shell的變體(破折號:從端
${var#stuff}除去水珠stuff ,bash,ksh等)

相關問題