Posted at

検索してファイルを消す時に高速に行う方法

More than 5 years have passed since last update.

「プロフェッショナル イチロースペシャル」を見て

真っすぐに自分と向き合う姿にホレた千葉です。

今日は、あるファイルを検索して消す時に、高速になる方法です。


find + xargs = 高速

速い

find /XXXX/XXXX/*.txt -type f | xargs rm -rf

遅い

find /XXXX/XXXX/*.txt -type f -exec rm -rf {} ¥;

消すファイル数が多ければ多い程、xargsを使った方が速い。

なぜなら、

「-exec」を使用すると、内部的には見つけたファイルに対して毎回rmを行う。

「xargs」を使用すると、内部的にはコマンド1発で終了。

例えば、



「-exec」

find /XXXX/XXXX/*.txt -type f -exec rm -rf {} ¥;

は、内部的にはこう

 rm aaa.txt

rm bbb.txt
rm ccc.txt
rm ddd.txt



「xargs」

find /XXXX/XXXX/*.txt -type f | xargs rm -rf

は、内部的にはこう

rm -rf aaa.txt bbb.txt ccc.txt ddd.txt

コマンド一発で終わるか、沢山コマンドを発行するかの違い。

これが、100万ファイルが対象だった場合はかなりの時間差になる。

xargsコマンドは、かなり便利なので覚えておくと特をすると思います。

他にもxargsは色々使えます。標準出力をコマンドに渡せるので。

現場でもよく使います。

次は、色々な使えるxargsの記事でも書いてみます。

以上!!