Command-Line

刪除除少數擴展外的所有內容

  • March 2, 2022

我可以rm用正則表達式或要刪除的東西修改命令嗎?目前目錄中的每個文件,除了帶有副檔名的文件*.bmp*.wav*.png?它應該不區分大小寫,因為有類似*.BMPor的文件*.bMP

@ChrisDown 提供了一個bash解決方案,該解決方案考慮了文件和目錄的差異,以及是否沒有要刪除的文件。

鑑於rm在這些情況下會失敗,該命令可以簡化為(仍然帶有bash):

shopt -s extglob nocaseglob
rm -- !(*.bmp|*.wav|*.png)

請記住將兩個 shell 選項重置為其預設值。就我而言extglob,已經在互動式外殼上設置了,所以我只需要

shopt -u nocaseglob

或者在子 shell 中執行這兩個命令:

(shopt -s extglob nocaseglob
rm -- !(*.bmp|*.wav|*.png))

如果您想提前查看將刪除哪些文件,只需將 替換rmecho.

如果您還想刪除隱藏文件,請添加該dotglob選項。

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