find & grep を実行し、出力にパスを含めます。

find & grep を実行し、出力にパスを含めます。

少なくともCentOSシステムと以前のバージョンのFedoraでは、次のコマンドを実行して、対応するgrep一致のファイルのリストを取得できます。

$ find -name "version.php" -type f | xargs grep "^\$wp_version" site.com/wp-includes/version.php:$wp_version = '4.7.3';

少なくともFedora 22以降では、同じコマンドを実行するとパスとファイル名は含まれなくなります。

find -name "version.php" -type f | xargs grep "^\$wp_version" $wp_version = '4.7.3';

パスのみを表示するために-lを含めることができることを知っていますが、一致を失うことなくパスを含める方法はありますか? manファイルには何も表示されません。

ベストアンサー1

CentOS / Fedora、したがってGNU grepを仮定すると、次のスイッチがあります:

-H, --with-filename
   Print the file name for each match.  This is the default 
   when there is more than one file to search.

つまり、動作の違いは、最初のケースでは、findが複数のファイルをキャプチャしてgrepファイル名を一覧表示することです。 2番目のケースでは、1つのファイルのみが一致すると名前が失われます。

したがって、-H手動で追加して強制的に適用してください。

おすすめ記事