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

Sae*_*ani 11 find

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

我想出了这个:

find ./ -size +1M | xargs rm
Run Code Online (Sandbox Code Playgroud)

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

命令会是什么样子?

Sun*_*eep 18

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


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

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

由find命令过滤的所有文件被传递给rm命令

  • 值得注意的是,并非所有版本的 `find` 都支持 `-delete`,尽管您仍然可以使用 `-exec rm {} +` 避免使用 `xargs` (2认同)

tec*_*raf 7

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

find . -type f ! -name '*.mp3' ! -name '*.mp4' -size +1M -delete
Run Code Online (Sandbox Code Playgroud)

或者如果您find不支持delete:

find . -type f ! -name '*.mp3' ! -name '*.mp4' -size +1M -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)

  • 好吧,我没有 AIX 可以直接检查自己,但它没有记录在该版本的选项中:https://www.ibm.com/support/knowledgecenter/ssw_aix_72/com.ibm.aix.cmds2/find。 htm (2认同)