今まで↓のように for で回していたんですが
# [git] 'tmp-' で始まるブランチを全て削除
for branch in $(git branch --list "tmp-*" | cut -b 3-); do
git branch -D $branch
done
xargs -n 1
を使うと↓のように関数型言語の map みたいな感じで書けます。
# [git] 'tmp-' で始まるブランチを全て削除
git branch --list "tmp-*" | cut -b 3- | xargs -n 1 git branch -D
xargs
は何も指定しない場合、与えたコマンドの一番最後に引数を追加して呼び出すのですが、コマンドの一番最後以外の場所に引数を指定したい時もあります。そのような場合は -I
オプションを使って置換文字列を指定するとよいです。上の例を -I
を使って書き直すと以下のようになります。(置換文字列には {}
を指定しました)
# [git] 'tmp-' で始まるブランチを全て削除
git branch --list "tmp-*" | cut -b 3- | xargs -n 1 -I{} git branch -D {}
また、-P
オプションをつけるとコマンドの並列実行ができます。重いコマンドをたくさん走らせるときには便利かもしれません。
# カレントディレクトリにあるファイルをそれぞれ gzip 圧縮する (4並列)
ls | xargs -n 1 -P 4 gzip -v