【问题标题】:Find files between 2 dates查找两个日期之间的文件
【发布时间】:2014-10-19 23:56:56
【问题描述】:

我想用这种格式获取两个日期之间的每个文件: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 }'

提前致谢!

【问题讨论】:

  • 您正在尝试匹配具有 yyyy-mm-dd 格式的文件名?还是文件的 mtime/atime/ctime?
  • 抱歉忘记了,是mtime/atime/ctime文件

标签: date unix datetime awk ls


【解决方案1】:

你的意思是有旧版本的“find”还是根本没有“find”。

如果你确实有 find,但它是旧版本,那么除了 '-newermt' 还有另一种方法:

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

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

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

【讨论】:

  • 我有一个旧版本的 find。但我不能写文件,因为我只有阅读权限。这是一家大公司的产品服务器,所以我无法做出我想要的:/
【解决方案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}'

【讨论】:

    猜你喜欢
    • 2020-07-19
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    相关资源
    最近更新 更多