findの結果を逆順に並べてxargsに渡す

Posted by mkamo on 2009年6月13日

findの結果を逆順に並べ替えてxargsに渡すコマンドラインのメモ.

以下のようなコマンドラインでfindの結果を逆順に並べ替えてxargsに渡せる.

> find /var/log/apache2 -name 'access.log.*.gz' | tac | xargs zcat

この例では,まず/var/log/apache2にあるaccess.log.*.gzファイルを探す.apacheのログは’*'の個所は数字で,結果は数字の小さい順に表示される.これをtacに渡すと行単位に逆順に並べ替えてくれる.最後にxargsにそれを渡すので,結果,access.log.*.gzにマッチするファイルを’*'の個所の数字が大きい順にzcatでつないだ文字列が標準出力に出力される.

なお,ファイル名に空白が入る可能性がある場合は,以下のようにxargsにヌル文字区切りの文字列を渡す必要がある.findとxargsの間にtacが入るため少々面倒.

> find /var/log/apache2 -name 'access.log.*.gz' | tac | tr '\n' '\0' | xargs -0 zcat


コメントを書く




XHTML: 次のタグが使用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Please note: 投稿されたコメントが表示されるにはいくらかの時間がかかります.投稿後直ちに表示されませんが投稿ボタンを何度も押さないようお願いします.