Shell
刪除名稱中帶有空格的文件
我正在嘗試刪除名稱中帶有空格的所有文件。我正在使用以下命令。但這給了我一個錯誤
命令 :
ls | egrep '. ' | xargs rm
在這裡,如果我只使用
ls | egrep '. '
命令,它會給我所有文件名,文件名中有空格。但是當我試圖將輸出傳遞給 rm 時,所有空格(前導或尾隨)都會被刪除。所以我的命令沒有得到正確執行。有關如何刪除名稱中至少有一個空格的文件的任何指示?
rm
您可以在命令上使用標准萬用字元:rm -- *\ *
這將刪除名稱中包含空格的任何文件;該空間被轉義,因此外殼不會將其解釋為分隔符。添加
--
將避免文件名以破折號開頭的問題(它們不會被解釋為參數rm
)。如果要在刪除每個文件之前對其進行確認,請添加以下
-i
選項:rm -i -- *\ *
我會避免解析
ls
輸出為什麼不 :
find . -type f -name '* *' -delete
rm
:-)沒問題。儘管這是遞歸的,並且會刪除目前目錄和嵌套目錄中所有帶有空格的文件,如註釋中所述。