はじめに

自分が出会ったコマンドでかなり好きなコマンドの中に xargs がある。
このコマンドについて、ちょっと便利な使い方をメモするために作成した。

環境

1
2
Windows 10 Professional
WSL2 (Ubuntu 22.04 LTS)

使い方

find + xargs + rm

よく使う用途としては、
find コマンドと組み合わせて、find の検索結果を xargs コマンドに渡して処理を行うというもの。
例えば、 find で検索した結果を xargs + rm で削除するということをやってみる。

1
find . -type f | xargs rm

これでできちゃうんです。
これの良いところは、ファイルのみを削除できるし、find が 階層の下まで検索してくれる。
rm コマンド単体だと rm -f * となるが、これは直下までで下の階層までは削除しない。

また、

1
find -name [検索文字列] | xargs rm

とすることで任意のファイルを削除したりすることもできる。

find + xargs + grep

1
find . -type f | xargs grep -n '検索文字列'

をすることで、find で検索したファイルの中から、 検索文字列 がヒットするファイルを検索してくれる。
サーバ上で検索するときには非常に便利!

dry-run

xargs をいきなり使って処理させるのは怖い。
そういうときのために、 -p オプションがある。

例えば、さっきのコマンドに -p オプションを付けてみる。

1
find . -type f | xargs -p rm

↓このようにどのように展開されるのかを見ることができる。

1
2
$ find . -type f | xargs -p rm
rm ./sample ./aa/test?...

※ ちなみに find . -type f で下記のような結果になる。

1
2
3
$ find . -type f
./sample
./aa/test

参考

おわりに

xargs コマンドに出会ってから未だにこのコマンドはすげーって思う。
非常に便利なのでぜひマスターしたい!