我有日志文件列表,其名称有日期后缀:
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答案 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想法。