Shell-Script

刪除目錄中的舊文件,但異常文件中存在的文件除外

  • November 20, 2018

我正在編寫一個 shell 腳本來刪除目錄中的舊文件(超過 60 天),除了少數文件,這些文件名保存在另一個目錄中的異常文件中。

我知道以下命令適用於一個異常文件,但我需要檢查異常文件列表

find . ! -name 'file.txt' -type f -exec rm -f {} +

假設您的文件具有合理的名稱(即它們沒有嵌入換行符),這樣的事情應該可以工作:

find . -mtime +60 | fgrep -v -x -f exceptions.txt | xargs -d '\n' rm -f

替換rm -fls -1先進行空執行。完全按照findin列印的路徑放置路徑exceptions.txt

我認為沒有這樣的選項,您可以使用排除列表find建構命令:printf

find . -name "*.txt" $(printf "! -name %s " $(cat file.txt)) -mtime +60 -exec rm -f {} +

file.txt將有要在find命令中排除的文件列表。

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