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

cla*_*amp 44 recursive timestamps files

如何递归列出在 22.12.2011 和 24.12.2011 之间更改的所有文件?

Tru*_*ueY 42

使用 Gilles 的解决方案并再次阅读man find(1)后,我找到了一个更简单的解决方案。最好的选择是 -newerXY。可以使用 m 和 t 标志。

m   The modification time of the file reference
t   reference is interpreted directly as a time
Run Code Online (Sandbox Code Playgroud)

所以解决办法是

find . -type f -newermt 20111222 \! -newermt 20111225
Run Code Online (Sandbox Code Playgroud)

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


Gil*_*il' 29

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

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

touch -t 201112220000 start
touch -t 201112240000 stop
find . -newer start \! -newer stop
Run Code Online (Sandbox Code Playgroud)


stu*_*ent 18

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

find -type f -newermt "2011-12-22" \! -newermt "2011-12-24"
Run Code Online (Sandbox Code Playgroud)

或者

find -type f -newermt "2011-12-22 00:00:00" \! -newermt "2011-12-24 13:23:00"
Run Code Online (Sandbox Code Playgroud)

如果您还想指定时间。


onu*_*gör 7

假设您不需要精确到秒,这应该有效。

find . -type f -mmin -$(((`date +%s`-`date -d 20111222 +"%s"`)/60)) \! -mmin +$(((`date +%s`-`date -d 20111224 +"%s"`)/60))
Run Code Online (Sandbox Code Playgroud)

编辑:更改cminmmin@Eelvex 评论后。 编辑: '\!' 丢失的

  • `-cmin` 是“状态变化”,`-mmin` 是“数据变化”。你可能想要`-mmin` (6认同)