2017-06-16 42 views
0

我的命令:RM給 '沒有這樣的文件或目錄' 對現有文件

find . -name "myfile.h" | sed 's/.*/\"&\"/' | awk '{print $1}' | while read filename; do 
rm -r $filename 
done 

輸出

rm: "./xxx/myfile.h": No such file or directory 

,但是,當我跑 「RM ./xxx/myfile.h」它成功了!

+0

使用'rm -v -r'而不是'rm -r'來了解真正發生的事情 –

+0

任何不接受的原因? – codeforester

回答

1

爲什麼要在文件名中加雙引號?這就是你得到錯誤的原因。另外,在這種情況下最好不使用-r選項來調用rm。剛剛嘗試這一點:如果您在具有包含a/b/myfile.ha/c/myfile.h文件樹中的rm命令被執行兩次

find . -name "myfile.h" -delete 
+0

它的工作原理..我的文件路徑可能包含空間 –

+0

將「rm -r」替換爲「rm -rf」也起作用 –

+0

將文件名稱變量放在雙引號中時,空間沒有問題。謹慎使用rm -rf。 – codeforester

0

find . -name "myfile.h" | while read filename; do 
    rm -- "$filename" 
done 

更簡單地說,你可以使用-delete選項find相同的目錄a/

您可能想要替換rm -rrm -v -r以確認這種直覺。

您可以通過rm -rf "$filename"取代rm -r $filename,以避免消息(和刪除您sed ...)

要調試find(1)通過echo rm更換rm。 閱讀rm(1)

相關問題