$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

ある文字列は含まれているけど、ある文字列は含まれていないファイルを探すワンライナー

ちょっと便利だったので自分用にメモ。

  • git grepにはgrepに引っかかったファイル名を出す --name-onlyオプションがある
  • またgit grepでは逆にgrepに引っかからなかったファイル名を出す --files-without-matchオプションがある

これを利用すると以下のコマンドで、ある文字は含まれているけど、ある文字は含まれていないファイルをワンライナーで探せる。

例えば「ほげほげ」は含まれているファイル中で、「ふがふが」が含まれていないものを探すには以下のようにする。

$ git grep --name-only -e 'ほげほげ' | xargs git grep --files-without-match -e 'ふがふが'


適当にやっただけなので、他にいい方法がありそうではある。