Shell

刪除名稱中帶有空格的文件

  • February 27, 2019

我正在嘗試刪除名稱中帶有空格的所有文件。我正在使用以下命令。但這給了我一個錯誤

命令 :ls | egrep '. ' | xargs rm

在這裡,如果我只使用ls | egrep '. '命令,它會給我所有文件名,文件名中有空格。但是當我試圖將輸出傳遞給 rm 時,所有空格(前導或尾隨)都會被刪除。所以我的命令沒有得到正確執行。

有關如何刪除名稱中至少有一個空格的文件的任何指示?

rm您可以在命令上使用標准萬用字元:

rm -- *\ *

這將刪除名稱中包含空格的任何文件;該空間被轉義,因此外殼不會將其解釋為分隔符。添加--將避免文件名以破折號開頭的問題(它們不會被解釋為參數rm)。

如果要在刪除每個文件之前對其進行確認,請添加以下-i選項:

rm -i -- *\ *

我會避免解析ls輸出

為什麼不 :

find . -type f -name '* *' -delete

rm:-)沒問題。

儘管這是遞歸的,並且會刪除目前目錄和嵌套目錄中所有帶有空格的文件,如註釋中所述。

引用自:https://unix.stackexchange.com/questions/208140