如何列出从“x”到“y”时间之间创建的所有文件?我想列出“2014 年 12 月 29 日 18:00”到“2014 年 12 月 30 日 18:00”之间创建的文件。使用 ls 或 stat?
答案1
如果你的有并且有 GNU/BSD 找到,例如如果它是操作系统X,您可以使用其-newerBt
谓词来比较文件的创建(“乙irth”)时间与特定时间。
find -newerBt "29-dec-2014 18:00" ! -newerBt "30-dec-2014 18:00"
这会递归地遍历子目录。如果您只想当前目录中的文件,请执行此操作
find -mindepth 1 -maxdepth 1 -newerBt "29-dec-2014 18:00" ! -newerBt "30-dec-2014 18:00"
如果您的系统不跟踪创建时间,您可以使用修改时间。替换-newerBt
为-newermt
.
也不ls
提供stat
按时间过滤文件的方法。他们所能做的就是列出文件的时间戳,并且过滤时间范围的输出并不容易。find
是适合这项工作的工具。
POSIX 查找只能将一个文件的时间戳与另一个文件的时间戳进行比较,因此在某个时间间隔内过滤文件的可移植方法是创建边界文件。您只能过滤修改时间,POSIX 没有定义创建时间。
touch -t 201412291800 /tmp/start
touch -t 201412301800 /tmp/stop
find . -newer /tmp/start ! -newer /tmp/stop
或者如果你不想递归
find . ! -name . -prune -newer /tmp/start ! -newer /tmp/stop