我需要從給定目錄中刪除除一個(其名稱已定義)之外的所有檔案。
我如何從 OS X 的終端執行此操作?我可以用一個命令來完成此操作嗎?
答案1
shopt -s extglob && rm !(non_delete_file)
或者
rm -f !(non_delete_file)
或者
find . ! -name non_delete_file -delete
請注意,上述find
命令將以遞歸方式運行 - 它將刪除當前目錄以及所有子目錄中的所有檔案和目錄。如果這是一個問題,請使用-type f
(僅符合檔案) 和-maxdepth 1
(僅符合目前目錄中的內容,忽略子目錄)
find . -type f -maxdepth 1 ! -name non_delete_file -delete
答案2
- 將要保留的檔案移到目錄外的某個位置
- 使用您喜歡的方法刪除目錄中的所有內容
- 將要保留的檔案移回目錄中
不完全是“高科技”,但如果使用這種方法,則更難意外刪除要保留的文件。
顯然,如果文件需要在所有大屠殺發生時持續存在於目錄中,則這種方法會失敗。
答案3
嘗試
rm `ls | grep -v '^defined$'`