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」它成功了!
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」它成功了!
爲什麼要在文件名中加雙引號?這就是你得到錯誤的原因。另外,在這種情況下最好不使用-r選項來調用rm。剛剛嘗試這一點:如果您在具有包含a/b/myfile.h
和a/c/myfile.h
文件樹中的rm
命令被執行兩次
find . -name "myfile.h" -delete
它的工作原理..我的文件路徑可能包含空間 –
將「rm -r」替換爲「rm -rf」也起作用 –
將文件名稱變量放在雙引號中時,空間沒有問題。謹慎使用rm -rf。 – codeforester
使用'rm -v -r'而不是'rm -r'來了解真正發生的事情 –
任何不接受的原因? – codeforester