在日期范围后缀中查找文件

时间:2014-03-19 17:12:37

标签: bash date

我有日志文件列表,其名称有日期后缀:

mylog.2014-01-01.gz
mylog.2014-01-02.gz
........
mylog.2014-03-04.gz

我有一个开始和结束日期,例如2014-02-01 - > 2014年2月4日。在linux脚本上使用bash我想找到名称与日期范围匹配的文件。所以我想获取文件:

mylog.2014-02-01
mylog.2014-02-02
mylog.2014-02-03
mylog.2014-02-04

我不能依赖

find /path -type f -newer $startFile -not -newer $endFile mylog*gz

因为可以在 2014-02-01 23:59 2014-02-02 00:01

上修改mylog.2014-02-01

1 个答案:

答案 0 :(得分:1)

也许:

START_DATE=$(date -d '2014-02-01 01' '+%s')
END_DATE=$(date -d '2014-02-04 01' '+%s')
IFS=.
for i in mylog.*.gz; do
    fname=($i)
    d=$(date -d "${fname[1]} 01" '+%s')
    if (($d > $START_DATE && $d < $END_DATE)); then
        echo "Found file: $i"
    fi
done

感谢@kojiro的IFS和glob想法。