递归删除小于 1MB 的文件

15 bash

如何从目录中递归删除小于 1MB 的文件?

Sve*_*ach 24

这可以通过以下方式完成find

find . -type f -size -1M -exec rm {} +
Run Code Online (Sandbox Code Playgroud)

请注意,这将递归下降到子目录中,并将无条件删除所有小于 1 兆字节的文件。当心。

  • @DanielAndersson:“find”限制被调用进程的参数数量以适应系统的限制,与“rm *”相反,后者保证是单个进程调用。如有必要,`find` 将调用`rm` 的多个实例。而且我很确定特殊字符得到了正确处理,包括换行符。出于灵活性的原因,我更喜欢 `-exec rm` 而不是 `-delete` —— 例如,后者无法删除写保护的文件。 (2认同)
  • 对于任何感兴趣的人,如果您想删除所有_大于_ 1M 的文件,请使用命令 `find 。-type f -size +1M -exec rm {} +`。注意 +1M 而不是 -1M。 (2认同)

小智 11

这应该可以完成这项工作:

$ find <directory> -type f -size -1M -delete
Run Code Online (Sandbox Code Playgroud)

  • @Invoker,我相信 `-` 符号是一个减号,意思是“小于 1M”。如果你运行 `find &lt;directory&gt; -type f -size +1M -delete` 你会删除所有 _larger than_ 1M 的文件。 (3认同)