2011-05-10 4 views
2

gzipされたapacheアクセスログファイルの行のリストを取得することに問題があります。私が望むのは、1と2だけの番号のログファイルのリストを取得し、grepして特定の一致するテキストを含む行を抽出することです。パイプでgzipされたログファイルのzgrepへのリスト

私はもともとこれは単なるアクセスログのアーカイブのために働くようになった「/パス名」テキストは私が探していたテキストだった。1.番:LSは正規表現をサポートしていないので

zgrep /pathname/ access_*.log.1.gz 

、私が思い付きました私がしたいファイルのカレントディレクトリからのリストを取得するには、次

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' -printf '%P\n' 

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' | sed "s|^\./||" 

私の問題は今、そのファイルリストの出力を取り、私のテキストに一致するファイル内の行を返すためにファイルを介しzgreppingされます。私はここで間違った木を吠えていますか?

答えて

2

試してみてください。また

zgrep /pathname/ access_*.log.{1,2}.gz 

、-exec見つける使用:

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' -exec zgrep /path/ {} \; 
+0

Dammit。答えは、Linuxを扱うときは、想像以上に簡単です。それはうまく働いた、ドッグベーン。大変ありがとう! – ogradyjd

+0

私は最初と最後を使った。私は2番目のコマンド(execで)を試してみました。答えにもう一度感謝します。 – ogradyjd

0

私は、Apache-のログを持っていないので、私は類似しているが、同一ではないパターンを使用します。

ls /var/log/*.[12].gz 

シェルは正規表現をサポートしませんが、[123]または[1-3]、{1,2,3}、{1..3}、さらには{o..w}および{066..091}。

関連する問題