如何删除比大目录中旧的文件

如何删除比大目录中旧的文件

我有一个包含超过 1300 万个文件的目录,我想根据 mtime 删除其中一些文件,如何有效地做到这一点?它位于 ext4 上。

答案1

你可能不会得到比以下更有效的方法:

find /dir -type f -mtime +6 -delete

删除超过 7 天(是的,是 7,不是 6)天的文件。

在任何情况下,您都需要lstat()对每个文件执行一次系统调用以确定其最后修改时间。删除文件(unlink()从目录中删除文件)的成本很高,因为它需要编辑目录的内容、更新目录的修改时间、更新文件在 inode 中的链接计数以及更新块/盘区分配信息。

使用-delete(GNU 扩展)非常高效,因为可以直接unlink()完成find,而无需调用单独的rm实用程序。它意味着-depth,但我不认为这会对性能产生太大影响。

相关内容