Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
136
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

Organization

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

「プロフェッショナル イチロースペシャル」を見て
真っすぐに自分と向き合う姿にホレた千葉です。

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

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

以上!!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
136
Help us understand the problem. What are the problem?