例如,查找任意一天(不是特定日期)的 20:00 到 23:30 之间创建的所有文件?
一直在经历man find
并且没有发现任何可以做到这一点的东西。
我是否必须编写自己的脚本来解析创建时间?
答案1
您可以使用-newerXY
在具体的日,例如:
find -newermt "20150203 2000" -a \! \( -newermt "20150203 2330" \)
我使用修改时间,因为我的 ext4 文件系统不保存创建时间。如果您的文件系统支持修改时间,则可以使用-newerBt
。
如果你需要在这些时间之间查找文件任何天,那么您需要为列表中的每个文件运行一个脚本find
。最简单的命令是stat -c %y "$1"
,然后提取并分析时间字段。
您可以对一天中的秒数进行算术运算(($(stat -c %Y "$1") % 86400))
,检查它是否在 72000 到 84600 之间,但这会忽略夏令时,识别在夏季 21:00 到 00:30 之间修改的文件。
答案2
使用下面的命令:
find . -mtime $(date +%s -d"Aug 10, 2013 23:30:00") -mtime $(date +%s -d"Aug 1, 2013 20:00:00")
或者尝试这个:
find /var/tmp -mtime +2 -a -mtime -8 -ls
查找超过 2 天但不超过 8 天的文件。