時間範囲内のファイルグループを grep するにはどうすればよいでしょうか?

時間範囲内のファイルグループを grep するにはどうすればよいでしょうか?

私は、ネットワーク トラフィックの完全なパケット キャプチャを実行するバッファ ボックスで使用されるスクリプトを作成しようとしています。これはかなり大規模なネットワーク用なので、キャプチャを 100 MB のセグメントに分割します。ネットワーク トラフィックが 1 分間以上高くなると、その期間をカバーする複数の pcap が作成されることがよくあります。

そこで私がやりたいのは、何かを探しているアナリストが日付と時刻、そしてその前後何分でファイルを検索したいかを指定できる bash スクリプトを作成することです。明らかに、次のようなことができます -

ls -al | grep "Dec  1" | grep 02:00
ls -al | grep "Dec  1" | grep 02:01

など、各結果を取得し、探している特定のキーワードについて各ファイルを個別に grep しますが、時間範囲内に作成されたすべてのファイルに対してより広範な検索を実行し、各ファイルに対してキーワードを grep できるようにしたいと考えています。

どのようにすればよいかよくわかりません。ご協力いただければ幸いです。

答え1

findGNU/Linux で実行できる優れた機能のいくつかを以下に示します。

単位:

  • nその通りユニット
  • -n未満ユニット
  • +nより多い単位 -

どうしたの:

  • -atime: 前回アクセスした
  • -ctime: 変更点ファイル自体(権限、所有者など)ではなく、その内容
  • -mtime:ファイルの内容かわった
  • -amin n:分齢
  • -atime n:日(24時間)前
  • ctime/minおよびも同様ですmtime/min

したがって:

  • find -atime -30→ 最終アクセスから30日以内
  • find -ctime +5→ 5日以上前、ファイル自体に変更あり
  • find -mtime +2 -31→ ファイルの内容が 2 日以上 31 日以内に変更されました

また - -daystart: 今日以降、0.00h


グレッピング

find もの -exec grep {} \;→; 最後の部分 ( ) は重要です -と{} \;の間の 1 つの空白に注意してください{}\;

オプション-execを使用すると、他のコマンドを組み込むことができます。find


また:なぜ出力を解析すべきではないのかls

答え2

find -iname "" -mtime -7 -exec zgrep "" {} \;

例えば

/opt/WebSphere/AppServer/profiles/application/logs/ を検索 -iname "SystemOut*" -mtime -7 -exec zgrep "FileNotFoundException" {} \;

ディレクトリ /opt/WebSphere/AppServer/profiles/application/logs/ 内で、過去 7 日間の SystemOut で始まるファイルを検索し、文字列 FileNotFoundException を探します。

関連情報