部屋を掃除したら漫画が沢山出てきたので書く日記

漫画とか合唱とかUNIXとかLinuxとかについて書く日記です。

標準出力を引数としてコマンドを実行する(xargs)

何を言っているのか自分でもよく分からないですが、例えば

#ls -1
a1.txt
a2.txt
a3.xls
a4.xls

というようにファイルがあって、これらを全て消したい場合、

# rm -rf ./*

でも良いんですが、これでも可能です。

# ls -1|xargs rm -rf

別に使わなくてもいいじゃん、とか思いますが、これが便利なのです。例えば*.xlsだけ消したいときは、

# find . -name "*.xls"|xargs rm -rf

とすれば良いのです。これは便利。ファイルが多ければ多いほど効果を発揮します。
ちなみに、標準出力は行ごとに処理するようなので、ls -1でもfindでもいいでしょう。

Perlでやるとこんな感じ。この方がより複雑な事が出来るので、良い感じです。

# ls | perl -nle 'printf "cp %s /var/tmp \n",$_'| sh -x

活用してみようー。
ではー。