我怎样才能获得所有修改过的文件的列表,比如 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'
(我添加了maxdepth
和xdev
来限制搜索)
对于这些相对日期,可以使用分钟、小时、天、周和月。
“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