在2个日期之间查找文件

时间:2014-08-26 15:21:31

标签: date unix datetime awk ls

我希望以这种格式获取2日期之间的所有文件:YYYY-MM-DD HH:mm

我也有一些约束:即使在/ tmp中我也无法写文件,而且我无法使用find --newermt,因为它是旧服务器。

我尝试使用awk但没有成功:

ls -l  --time-style=long-iso | awk '{ if (mktime(gensub ("-", " ", $6) " " gensub (":", " ", $7) " 00") >= mktime(gensub ("-", " ", gensub (":", " ", "2014-08-26 12:30")) " 00") && mktime(gensub ("-", " ", $6) " " gensub (":", " ", $7) " 00") <= mktime(gensub ("-", " ", gensub (":", " ", "2014-08-26 12:30")) " 00")) print $8 }'

提前致谢!

2 个答案:

答案 0 :(得分:2)

你的意思是有一个旧版本的&#39;发现&#39;或者你没有找到&#39;一点都不。

如果您确实找到了,但它是旧版本,那么除了&#39; -newermt&#39;之外还有其他方式:

How to use 'find' to search for files created on a specific date?

第三个答案显示了如何使用您需要的时间戳创建两个文件。然后使用:

find / -newer /tmp/t1 -and -not -newer /tmp/t2

答案 1 :(得分:2)

我看看您是否可以使用适当格式的stat。在我的(linux)系统上,用

打印出文件名和mtime
stat --format=$'%n\t%y' *

然后,根据mtime进行过滤:

stat --format=$'%n\t%y' * |
awk -F"\t" -v from="2014-08-01 00:00" \
           -v to="2014-09-01 00:00"   'from <= $NF && $NF <= to {NF--; print}'