index.php
「hello」という文字列を含むすべてのファイルの場所を見つけたいです。
ありがとうございます。
答え1
grep
次のように使用しますfind
。
find /top-dir -type f -name index.php -exec grep -l 'hello' {} +
/top-dir
検索したい最上位ディレクトリへのパスはどこにありますか?
を使用すると、-type f
一般的なファイルだけを見てfind
名前が 。-name index.php
インファイルに検索を制限しますindex.php
。
-exec grep -l 'hello' {} +
見つかったファイルに対して実行され、パターン()に一致するすべてのファイルのパスをgrep
出力します。'hello'
それはパスの出力を引き起こします-l
。grep
最後に、通話ごと+
にfind
できるだけ多くのファイルが提供されますgrep
。これ';'
をまたはに変更すると、一度に1つのファイルが呼び出されるため、\;
ファイルgrep
が多いと速度が遅くなる可能性があります。
答え2
コマンドでgrep
以下を使用しますfind
。
find -type f -name "index.php" -exec grep -q 'hello' '{}' \; -exec echo '{}' \;
答え3
Bashシェルを使用している場合は、サブディレクトリで一致するglobstar
オプションを有効にしてから、通常どおりに使用してください。**
grep
shopt -s globstar
grep -l hello **/index.php
shopt -s globstar
(無効化オプションを使用しない限り、この操作はシェルで一度だけ実行できますshopt -u globstar
。)
答え4
他の2つのコマンド方法find
:
find -type f -name "index.php" -exec grep -l 'hello' {} \;
find -type f -name "index.php" -exec grep -q 'hello' {} \; -print