2008/02/25


私の場合、xargsの引数がオーバーする程のファイルを扱う時は、少し怖いので一度別のディレクトリに移動してから削除するなりをやってます。
また、数十個の場合ならばfindだけでやってしまいますね。その方が思考が止まらないし...。
ただ、findとxargsの組み合わせで結構多いのが
  • さらにその中から間引きたい
  • 実行は並び替えた結果で行いたい
といった場合が少なからずあるのです。
例えばYYYYMMDD等といった日付形式のファイル名で散乱しているファイルを日付通りに処理したい。
と言った場合、やはりsortやgrepのお世話になるのが楽ですよね。
sortやgrepを使う場合、findで-print0した結果ではフィルタフィルタ実行する事が出来ません。
こんな場合には、findでは-print0せずに find . -name "*.txt" | grep '/[0-9]¥{8¥}¥.txt' | sort -n | tr ¥¥n ¥¥0 | xargs -0 ... といった感じにxargsに渡す寸前でtrを使って改行コードを¥0に置き換えてやる。

もう少し手間になってきたらawkとか使うけど、ちょっとしたものならこれでもOK。例が良く無いか...
Posted at by | Edit