删除目录中的旧文件,例外文件中存在的文件除外

删除目录中的旧文件,例外文件中存在的文件除外

我正在编写一个 shell 脚本来删除目录中的旧文件(超过 60 天),除了少数文件之外,这些文件名保存在另一个目录中存在的异常文件中。

我知道以下命令适用于一个异常文件,但我需要检查异常文件列表

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

答案1

假设您的文件具有正常的名称(即它们没有嵌入换行符),类似这样的事情应该可以工作:

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

首先替换rm -fls -1进行空运行。完全按照findin打印的方式放置路径exceptions.txt

答案2

我认为没有find这样的选项,您可以使用printf排除列表构建命令:

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

file.txtfind将有要在命令中排除的文件列表。

相关内容