Command-Line
刪除除少數擴展外的所有內容
我可以
rm
用正則表達式或要刪除的東西修改命令嗎?目前目錄中的每個文件,除了帶有副檔名的文件*.bmp
,*.wav
和*.png
?它應該不區分大小寫,因為有類似*.BMP
or的文件*.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))
如果您想提前查看將刪除哪些文件,只需將 替換
rm
為echo
.如果您還想刪除隱藏文件,請添加該
dotglob
選項。