查找并删除大于特定大小和类型的文件

查找并删除大于特定大小和类型的文件

我想清理服务器上的大型日志文件和备份。

我想出了这个:

find ./ -size +1M | xargs rm

但我不想包括 mp3 和 mp4。我只想对日志和存档文件(zip、tar 等)执行此操作

该命令会是什么样子?

答案1

find -type f \( -name "*zip" -o -name "*tar" -o -name "*gz" \) -size +1M -delete
  • \( \)构造允许对不同的文件名模式进行分组
  • 通过使用-delete选项,我们可以避免管道和麻烦xargs参见,
  • ./或者在对当前目录.使用命令时是可选的find


编辑:正如 Eric Renouf 所说,如果您的版本find不支持该-delete选项,请使用该-exec选项

find -type f \( -name "*zip" -o -name "*tar" -o -name "*gz" \) -size +1M -exec rm {} +

其中由命令过滤的所有文件find都传递给rm命令

答案2

如果要按名称排除文件,可以使用以下语法:

find . -type f ! -name '*.mp3' ! -name '*.mp4' -size +1M -delete

或者如果您find不支持delete

find . -type f ! -name '*.mp3' ! -name '*.mp4' -size +1M -exec rm {} \;

答案3

根据上面的答案,我使用下面的命令从大日志文件中清除服务器(在 cd'ing 到 /var/lib/jenkins 后)

find -type f -name *log -size +500M -delete

相关内容