ディレクトリがありますLinux特定のジョブが実行されると自動的に生成されるログファイルのリストがあります。各ログファイルには「」などのタイムスタンプが追加されます。ジョブ名_タイムスタンプ」
修正する:
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:次の場合は、2つのパラメータを渡します。タイムスタンプ「で与えられる。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:次の場合は、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
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
答え2
一方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
答え3
次のコードが機能します。
for i in myjob*; do
if [[ "myjob_2014-05-28_15:08:00.log" < "$i" ]]; then
echo $i
fi
done
答え4
-cnewer
findで使用できます。
find /mylogdir -name "job_*" -cnewer /mylogdir/job1_2014-05-28_15:08:00.log
もちろん、これはjob1_2014-05-28_15:08:00.log
ファイル名に基づいているのではなく、実際に変更されたファイルまたはメタデータが変更されたファイルを見つけることです。気になる限り、これは大丈夫でしょう。