はじめに
自分が出会ったコマンドでかなり好きなコマンドの中に xargs がある。
このコマンドについて、ちょっと便利な使い方をメモするために作成した。
環境
Windows 10 Professional
WSL2 (Ubuntu 22.04 LTS)使い方
find + xargs + rm
よく使う用途としては、find コマンドと組み合わせて、find の検索結果を xargs コマンドに渡して処理を行うというもの。
例えば、 find で検索した結果を xargs + rm で削除するということをやってみる。
find . -type f | xargs rmこれでできちゃうんです。
これの良いところは、ファイルのみを削除できるし、find が 階層の下まで検索してくれる。rm コマンド単体だと rm -f * となるが、これは直下までで下の階層までは削除しない。
また、
find -name [検索文字列] | xargs rmとすることで任意のファイルを削除したりすることもできる。
find + xargs + grep
find . -type f | xargs grep -n '検索文字列'をすることで、find で検索したファイルの中から、 検索文字列 がヒットするファイルを検索してくれる。
サーバ上で検索するときには非常に便利!
dry-run
xargs をいきなり使って処理させるのは怖い。
そういうときのために、 -p オプションがある。
例えば、さっきのコマンドに -p オプションを付けてみる。
find . -type f | xargs -p rm↓このようにどのように展開されるのかを見ることができる。
$ find . -type f | xargs -p rm
rm ./sample ./aa/test?...※ ちなみに find . -type f で下記のような結果になる。
$ find . -type f
./sample
./aa/test参考
- XARGS
https://linuxjm.osdn.jp/html/GNU_findutils/man1/xargs.1.html - 【 xargs 】コマンド――コマンドラインを作成して実行する
https://atmarkit.itmedia.co.jp/ait/articles/1801/19/news014.html - find, xargs, grepコマンドで検索 備忘メモ
https://qiita.com/tatsuo-iriyama/items/d636892a3f1694e6b16d - 【Linuxコマンド基礎】xargsがわからない!→基礎中の基礎を解説します。
https://e-seventh.com/linux-xargs-basic-usage/
おわりに
xargs コマンドに出会ってから未だにこのコマンドはすげーって思う。
非常に便利なのでぜひマスターしたい!