現在のディレクトリ内のすべてのファイルを検索して、「エラー」という単語を含む行を検索する単純な egrep コマンドがあります。
egrep -i "error" *
このコマンドは、サブディレクトリも通過します。フォルダ全体がどのように見えるかのサンプルを次に示します。
/Logfile_20120630_030000_ID1.log
/Logfile_20120630_030001_ID2.log
/Logfile_20120630_030005_ID3.log
/subfolder/Logfile_20120630_031000_Errors_A3.log
/subfolder/Logfile_20120630_031001_Errors_A3.log
/subfolder/Logfile_20120630_031002_Errors_A3.log
/subfolder/Logfile_20120630_031003_Errors_A3.log
最上位ディレクトリのログファイルには、「エラー」行が含まれています。しかし、「サブフォルダー」ディレクトリ内のログファイルには、「エラー」のある行は含まれていません。(ファイル名のみ)
したがって、私が得ている問題は、egrep コマンドが「サブフォルダー」内の情報を見ているように見えることです。私の結果は、バイナリブロックと思われるもののチャンクを取得し、次にトップフォルダーのログファイルから「エラー」という単語を含むテキスト行を取得します。
「サブフォルダー」の下にあるすべてのファイルを削除しても、フォルダー自体を削除しなかった場合、まったく同じ結果が得られます。
では、Unix はファイル履歴情報をフォルダー内に保持しますか??
この問題は次を実行することで修正されました: find . -タイプ f | egrep -i "エラー" *
しかし、なぜそれが問題だったのか、私はまだ理解していません。SunOS で C シェルを実行しています。