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

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」オプションのため
  1. コメントはまだありません。

  1. トラックバックはまだありません。