如何知道最近更新的文件

如何知道最近更新的文件

如果我运行 iostat -x 1,我偶尔会看到 5MB 到 10MB 的大写入。

正在写入哪些文件?

例如,我想检查最近创建的大小超过 5MB 的文件。

我该怎么做呢?

答案1

在/path下查找X分钟内修改的文件

find /path -cmin -X

Sign before minute:
    + more than X minutes / over X minutes
    - less than X minutes / within X minutes
   (no sign) exact

示例:查找/var/log(包括子目录)中最近30分钟内修改的所有文件

find /var/log -cmin -30

在/path下查找X大小较大的文件

find /path -size +X<unit>

Sign before size:
    + larger than
    - less than
   (no sign) exact

<unit> :
    b = block (default,512byte)
    c = byte
    w = word (2-byte)
    k = kbyte
    M = Mbyte
    G = Gbyte

示例:查找/var/log(包括子目录)中所有大于50k的文件

find /var/log -size +50k

结合

示例:查找 /var/log(包括子目录)中最近 30 分钟内修改过的所有大于 50k 的文件

find /var/log -cmin -30 -size +50k

如果你想包括 50k在你的结果中,更改为

find /var/log -cmin -30 -size +49k

聚苯乙烯: 避免find / .....这样做,因为不仅会花费很长时间,而且还包括一般不适合搜索的目录(/dev、/sys、/proc、...)。

答案2

find必须主动搜索文件系统上的文件并信任它们的时间戳。

最近的 Linux 系统上的替代方案是inotify。在这种情况下,内核会监视文件系统发生的更改,您可以使用例如inotifywait -m.这应该可以让您很好地了解实时发生的情况。

当递归监视大型目录树时,inotify 方法效果不佳。在这种情况下,find您将了解要监视哪些目录。

相关内容