Linux
列出大於文件名中特定時間戳的文件?
我在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 ”
我應該得到列表
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
”,作業名稱是“ job1 ”我應該得到列表
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
有什麼解決辦法嗎?
一個 awk (
mawk 1.3.3
) 解決方案:ls | awk -F'[_.]' '{printf "%s_%s\n", $2, $3}' | \ awk ' $0 > "2014-05-28_15:08:00" {print}'
給出:
2014-05-28_15:08:01 2014-05-28_15:08:09 2014-05-28_15:08:10 2014-05-28_15:08:11 2014-05-28_15:08:12 2014-05-28_15:08:13 2014-05-28_15:08:14 2014-05-28_15:08:22
一個
perl
解決方案:$ perl -nle ' BEGIN {$t = "2014-05-28_15:08:00"} if (/_(.*?)\./) { print if $1 gt $t; } ' file 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
更新
一個簡單的
perl
腳本:#!/usr/bin/perl use strict; use warnings; my $t = $ARGV[0]; my $l = qr/$ARGV[1]/; while(<DATA>) { if (/${l}_/) { if (/_(.*?)\./) { print if $1 gt $t; } } } __DATA__ 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