最近修改的文件列表

最近修改的文件列表

我怎样才能获得所有修改过的文件的列表,比如 3 个月前。我检查了问题,但我无法将其应用到我的场景中。我现在正在尝试这个,它似乎有效,但我知道应该有更好的方法使用 find.

ls -ltR | grep -v '2011-05' | grep -v '2011-06' | grep -v '2011-07' | grep -v '2011-08

答案1

一种解决方案是:find . -type f -mtime 90

这会查找上次修改时间为 90 天前的文件(在 91 x 24 小时前开始并在 90 x 24 小时前结束的 24 小时内)。

find . -type f -mtime -90查找过去 90 天内(或未来)修改的文件。

find . -type f -mtime +90查找至少 91 天前修改过的文件(至少在 POSIX 兼容find实现中)。

答案2

正如@hknik所说,-mtime操作find可能是你最好的选择,但如果你想获取所有文件大约三个月前,那么你需要一张更大的网:

find . -type f -mtime -105 -mtime +76

这将找到大约三个月前、11 到 15 周前的月份的常规文件。

(请注意,是 76 而不是 7 x 11 = 77,因为您希望将文件的年龄四舍五入为严格大于 76 的整数天数,以获得至少 77 天(11 周)的文件)。

答案3

zsh(.m[-|+]n) 全局限定符:

print -rl -- *(.m90)

将列出 90 天前修改的文件(在 91 x 24 小时前开始并在 90 x 24 小时前结束的 24 小时内,就像 POSIX 一样find -mtime 90)。

print -rl -- *(.m-90)

将列出过去 90 天内(或将来)修改的文件,

print -rl -- *(.m-100m+90)

将列出 91 到 100 天前修改的文件。

答案4

您可以直接使用“3 个月前”和“newerXY”语法:

 find . -maxdepth 2 -xdev -type f -newermt '3 months ago'

(我添加了maxdepthxdev来限制搜索)

对于这些相对日期,可以使用分钟、小时、天、周和月。

“m”代表修改时间,“t”代表直接时间(而不是参考文件的日期)。


或者通过组合两个绝对日期来选择时间跨度; 1月1日至15日:

#] find . -maxdepth 2  -newermt 'Jan 1'  ! -newermt 'Jan 15' -ls

   415640      4 -rw-r--r--   1  root     root         2190 Jan  8 15:14 ./df.man
   412465      4 -rw-r--r--   1  root     root           98 Jan  1  2020 ./ranfunc
   412282      4 -rw-------   1  root     root           23 Jan 13 16:53 ./.python_history
   406542      0 lrwxrwxrwx   1  root     root           56 Jan  8 19:46 ./.fvwm/.BGdefault -> /usr/share/fvwm/default-config/images/background/bg3.png
   417900     28 -rw-r--r--   1  root     root        25990 Jan  3 09:48 ./xterm.2020.01.03.09.48.03.xhtml

相关内容