如何列出大于特定时间戳的文件?

如何列出大于特定时间戳的文件?

我在 Linux 中有一个目录,其中包含日志文件列表,如果某个作业运行,日志文件会自动生成。每个日志文件都会附加时间戳,如“JobName_TimeStamp”

更新:

job_2014-05-28_15:05:26.log
job_2014-05-28_15:06:58.log
job_2014-05-28_15:07:02.log
job_2014-05-28_15:07:57.log
job_2014-05-28_15:08:00.log
job_2014-05-28_15:08:01.log
job_2014-05-28_15:08:09.log
job_2014-05-28_15:08:10.log
job_2014-05-28_15:08:11.log
job_2014-05-28_15:08:12.log
job_2014-05-28_15:08:13.log
job_2014-05-28_15:08:14.log
job_2014-05-28_15:08:22.log

job1_2014-05-28_15:08:11.log
job1_2014-05-28_15:08:12.log
job1_2014-05-28_15:08:13.log
job1_2014-05-28_15:08:14.log
job1_2014-05-28_15:08:22.log

我想运行一个 Linux 命令来列出所有大于特定时间戳的文件?

对于示例 1:我将传递两个参数,如果时间戳给定的是“2014-05-28_15:08:00“ 和作业名称是 ”工作

我应该得到以下列表

job_2014-05-28_15:08:01.log
job_2014-05-28_15:08:09.log
job_2014-05-28_15:08:10.log
job_2014-05-28_15:08:11.log
job_2014-05-28_15:08:12.log
job_2014-05-28_15:08:13.log
job_2014-05-28_15:08:14.log
job_2014-05-28_15:08:22.log

示例 2:我将传递两个参数,如果时间戳给定的是“2014-05-28_15:08:11“ 和作业名称是 ”工作1

我应该得到以下列表

job1_2014-05-28_15:08:12.log
job1_2014-05-28_15:08:13.log
job1_2014-05-28_15:08:14.log
job1_2014-05-28_15:08:22.log

有什么解决办法吗?

谢谢。

答案1

以下命令(可以轻松编写脚本)将为您完成此操作:

 for i in $(ls *); do
           if [[ "job_2014-05-28_15:08:00.log" < "$i" ]]; then
                  echo $i
           fi
 done

编辑:

假设你只想对名为我的工作,然后修改上述内容如下:

 for i in $(ls myjob*); do
           if [[ "myjob_2014-05-28_15:08:00.log" < "$i" ]]; then
                  echo $i
           fi
 done

答案2

简单查找命令:

find . -maxdepth 1 -type f -name job1_\* -newer job1_2014-05-28_15:08:11.log

此示例中有 2 个假设:

  • 日志文件的修改时间与文件名中的时间戳相关
  • 您可以提供特定的文件名,该文件名是所有所需日志文件的下限

相关内容