読者です 読者をやめる 読者になる 読者になる

$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 'ふがふが'


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