如何刪除目錄中除一個檔案之外的所有檔案?

如何刪除目錄中除一個檔案之外的所有檔案?

我需要從給定目錄中刪除除一個(其名稱已定義)之外的所有檔案。

我如何從 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

  1. 將要保留的檔案移到目錄外的某個位置
  2. 使用您喜歡的方法刪除目錄中的所有內容
  3. 將要保留的檔案移回目錄中

不完全是“高科技”,但如果使用這種方法,則更難意外刪除要保留的文件。

顯然,如果文件需要在所有大屠殺發生時持續存在於目錄中,則這種方法會失敗。

答案3

嘗試

rm `ls | grep -v '^defined$'`

相關內容