xargsで楽をする

findやgrepなどで検索し抽出したファイルを一気に開きたいことがある。

その際、コピペせずに引数をvimに渡せないか調べてみた。以下のようにすればOK

grep hoge | xargs vim

find . -name hoge | xargs vim

 

あと、同じような感じでgitの操作でもコピペを省ける

git branch | grep hoge | xargs git checkout

 

さらに応用版。ブランチ変更してみたらuntrackedなファイルがたくさん出てきて、一気にaddしたいとき

git ls-files -o exclude-per-directory=.gitignore | xargs git add

これでignoreに指定されてるファイルを除いて一気にaddできる

参考:http://gregorowicz.blogspot.jp/2010/04/using-xargs-with-git.html

 

あと、xargsには引数の限界まで一気に渡して、限界数を超えたものについては適宜分割して渡してくれるらしく、-nオプションを使うことで分割の単位も指定できる。

参考:http://arakanoj.com/xargs-%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9%E3%82%92%E8%A6%9A%E3%81%88%E3%82%8B-2619.html