如何递归列出 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