如何列出在一定时间范围内更改过的文件?

如何列出在一定时间范围内更改过的文件?

如何递归列出 2011 年 12 月 22 日至 2011 年 12 月 24 日期间更改的所有文件?

答案1

使用吉尔斯的解决方案并阅读后男人发现(1)我再次找到了一个更简单的解决方案。最好的选择是 -newerXY。可以使用 m 和 t 标志。

m   The modification time of the file reference
t   reference is interpreted directly as a time

所以解决办法是

find . -type f -newermt 20111222 \! -newermt 20111225

下限包含在内,上限包含在内,所以我添加了 1 天!而且它是递归的。它在 find v4.5.9 上运行良好。

答案2

一般来说,当您在目录及其子目录中递归查找文件时,请使用find.

指定日期范围的最简单方法find是在范围边界创建文件并使用谓词-newer

touch -t 201112220000 start
touch -t 201112240000 stop
find . -newer start \! -newer stop

答案3

除了已经给出的答案之外,请注意,您可以直接指定日期:

find -type f -newermt "2011-12-22" \! -newermt "2011-12-24"

或者

find -type f -newermt "2011-12-22 00:00:00" \! -newermt "2011-12-24 13:23:00"

如果您还想指定时间。

答案4

find可以采用 ISO 格式的日期时间,因此对于采用 UTC 的服务器来说,您可以指定与您所在位置的几个小时的偏移量。这也解决了必须添加一天的问题,因为您也在比较时间:

find -type f -newermt 20111224T0800 \! -newermt 20111225T0800

相关内容