find・grep の組み合わせでファイル名を表示する【Linuxコマンド】

  特定の文字列が含まれるファイルを検索する際に、findコマンドの-execオプションでgrepを使うことがある。
  以下のようなコマンドで検索する場合、検索にヒットしたファイル名が表示されず困ることがある。

find -type f -exec grep 'hoge' {} \;

対処法

grepの検索対象に/dev/nullも含めることでファイル名を表示することができる。

find -type f -exec grep 'hoge' {} /dev/null \;

解説

grepは複数のファイルを検索対象に指定すると、検索結果にファイル名を表示する。データを返さない/dev/nullを検索対象に含めることで、検索結果を変えないまま検索結果にファイル名を表示できる。