bash - 查找日期范围后缀内的文件

标签 bash date

我有名称带有日期后缀的日志文件列表:

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

我有一个开始和结束日期,例如 2014-02-01 -> 2014-02-04。在 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

因为mylog.2014-02-01可以在2014-02-01 23:59或者2014-02-02 00:01

修改

最佳答案

也许:

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 想法。

关于bash - 查找日期范围后缀内的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22513301/

相关文章:

linux - 如何将当前路径复制到剪贴板?

javascript - JS 日期,每月的第一天

bash - 通过终端向另一个登录用户发送消息 BASH 编程

bash - 逻辑或评估 Bash 脚本中的所有表达式

java - 使用 SimpleFramework 解析日期

mysql - DATEDIFF 与 DATE 比较 MySQL 中的日期

ios - 如何快速获取两个日期之间的 30 分钟时间段数组

java - 如何在 Java 中用月份和年份显示当前月份的日期?

php - 是什么杀死了这个进程以及如何阻止它这样做

bash - telnet redis bash 脚本