find
对于查找少于 X 天前修改的文件有很好的支持,但是我如何使用它find
来查找在某个日期之前修改的所有文件?
我在手册页中找不到任何find
可以执行此操作的内容,只能将其与另一个文件的时间进行比较,或检查创建时间和现在的时间之间的差异。创建一个具有所需时间的文件并与之进行比较是唯一的方法吗?
答案1
如果您只有“-newer file”,那么您可以使用以下解决方法:
# create 'some_file' having a creation date of 16 Mar 2010:
touch -t 201003160120 some_file
# find all files created after this date
find . -newer some_file
男人触摸:
-t STAMP
use [[CC]YY]MMDDhhmm[.ss] instead of current time
假设你的触摸有这个选项(我的是触摸 5.97)。
答案2
不,您可以使用日期/时间字符串。
从man find
:
-newerXY 引用
将当前文件的时间戳与引用进行比较。引用参数通常是文件的名称(并且其中一个时间戳用于比较),但它也可能是描述绝对时间的字符串。X 和 Y 是其他字母的占位符,这些字母选择使用引用的哪个时间进行比较。a The access time of the file reference B The birth time of the file reference c The inode status change time of reference m The modification time of the file reference t reference is interpreted directly as a time
例子:
find -newermt "mar 03, 2010" -ls
find -newermt yesterday -ls
find -newermt "mar 03, 2010 09:00" -not -newermt "mar 11, 2010" -ls
答案3
与问题没有直接关系,但对于在这里偶然发现的人来说可能会很有趣。
寻找命令不直接支持 -older 参数来查找早于某些要求日期的文件,但您可以使用否定语句(使用接受的答案示例):
touch -t 201003160120 some_file
find . ! -newer some_file
将返回文件较旧比提供的日期。
答案4
补充一下 - 您甚至可以使用两个 newermt 参数在时间间隔内进行搜索:
find ! -newermt "apr 01 2007" -newermt "mar 01 2007" -ls
查找自 2007 年 3 月以来的所有文件。