比较文件的修改时间和给定的时间戳?

时间:2015-04-12 08:01:17

标签: c++ bash shell awk gawk

我有一个hdfs目录,里面有很多文件和目录。

-rw-rw-rw-   3 root xyz  <filesize> 2015-04-12 00:34 file1
-rw-rw-rw-   3 root xyz  <filesize> 2015-04-11 11:34 file2
-rw-rw-rw-   3 root xyz  <filesize> 2015-04-09 09:54 file3
drwxrwxrwx   3 root xyz    0        2015-04-02 00:34 dir

我有一个awk脚本,它使用

过滤列表中的文件
awk '{ if($1 !~ /d.*/ ) {print $0}}'. 

我在c ++函数中使用它,它有两个date(yyyy-mm-dd)time (hh:mm:ss)格式的时间戳。 我想把条件放在&#39;如果&#39; &#39; awk&#39;它可以过滤位于两个时间戳之间的文件。

我试过

($6 >= startDate) && ($6 <= endDate) && ($7 >= startTime) && ($7 <= endTime)

但是这没有按预期工作。我是awk的新手。

1 个答案:

答案 0 :(得分:0)

您可以使用find来简化此操作。

find . -newermt "$dt1" ! -newermt "$dt2"

这是我用来测试的shell脚本。如果您可以从C ++代码中传递参数,则只需使用find命令即可将其缩短为一行。

# Date 1
startDate=2015-04-11
startTime=21:10:00
dt1="$startDate $startTime"

# Date 2
endDate=2015-04-11
endTime=22:10:00
dt2="$endDate $endTime"
find . -newermt "$dt1" ! -newermt "$dt2"

注意:我假设,startdate和starttime一起使用,enddate和endtime一起使用。但你可以自由选择。