Bash
Linux

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

More than 1 year has 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の記事でも書いてみます。

以上!!