findの結果をソートしてxargsに渡す

Posted by mkamo on 2009年6月13日

findの結果をソートしてxargsに渡すコマンドラインのメモ.

以下のようなコマンドラインでaccess.log.*.gzにマッチするファイルを「*」の個所の数字が大きい順にzcatでつないだ文字列が標準出力に出力される.

> find /var/log/apache2 -name 'access.log.*.gz' -print0 | \
sort -t '.' -k 3 -nrz | xargs -0 zcat

sortを使って,findの結果を「.」で区切った3番目の文字列を数値として比較し,降順に並べ替えてxargsに渡している.sortコマンドでは,以下のオプションを指定している.

  • 「-t」オプションで区切り文字を「.」とする
  • 「-k」オプションで3番目のフィールドをソート対象とする.3番目のフィールドとは「access.log.*.gz」を「.」で区切った3番目の「*」の個所のこと
  • 「-n」 オプションで数値的にソートする .例えば1と2と10をソートするとき1<10<2の順ではなく1<2<10とソートする
  • 「-r」オプションで降順(逆順)にソートする
  • 「-z」オプションで各行の末尾を「\n」(ラインフィード)ではなく「\0」(ヌル文字)とする.findの「-print0」オプションとxargsの「-0」オプションのため


コメントを書く




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

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