こんにちは、現在xy_Numberで始まり、今日(過去24時間ではない)作成/編集されたログファイルを検索しようとしています。
私は試した:
find /home/USER/logfilesError/ -maxdepth 1 -type f -daystart -mtime -1 print0 | xargs -0 grep - l xy_*
出力:
find: paths must precede expression: print0
以下を組み合わせる必要があります。
find -maxdepth 1 -type f -daystart -mtime -1
そして
ls | grep -E "xy_"
私が達成したいことは次のとおりです
今日の特定の場所からログファイルを検索し、そのファイルとERRORで始まる出力行をさらに検索します。 (他のラインINFOとDEBUG)
検索が正常に機能しています。検索後にgrepを使用してファイルをさらに確認して、ERRORを含むファイルを見つけたいと思います。
grep -rl "ERROR" /home/USER/logfilesError/
これをスクリプトに結合するにはどうすればよいですか?もし?誰かが私を助けることができますか?
答え1
grep を使用して find が操作を実行できる理由:
find /home/USER/logfilesError/ -maxdepth 1 -type f -name "xy_*" -daystart -mtime -1
答え2
その音から、あなたは次を探しています-name
:
find /path -maxdepth 1 -type f -name 'xy_*' -daystart -mtime -1 -exec grep -H ERROR {} +
からman find
:
-name pattern
ファイル名のデフォルト(先行ディレクトリが削除されたパス)はシェルパターンと一致します。メタ文字(「*」、「?」、「[]」)は、デフォルト名の先頭の「.」と一致します(これはfindutils-4.2.2の変更です。以下の標準適合セクションを参照)。ディレクトリとその下のファイルを無視するには、-pruneを使用します。 -path 説明の例をご覧ください。 Bashを含む一部のシェルは、シェルモードでは中かっこに特別な意味を与えますが、中かっこは特別とは見なされません。ファイル名の一致は、fnmatch(3)ライブラリ関数を使用して行われます。シェルによって拡張されるのを防ぐためにパターンを引用することを忘れないでください。