639

Windows では、フォルダー内の単語を検索するために検索を行ったでしょう。同様に、特定の単語が多くのサブディレクトリとファイルを含むディレクトリ内にあるかどうかを知りたいです。grep 構文を検索すると、ファイル名を指定する必要があることがわかりますgrep string filename

さて、ファイル名がわからないので、どうすればいいですか?友人が を提案しましたがgrep -nr string、これが何を意味するのかわかりませんし、結果も得られませんでした ( Ctrl+を発行するまで応答がありませんC)。

4

14 に答える 14

1019
grep -nr 'yourString*' .

最後のドットは、現在のディレクトリを検索します。各パラメータの意味:

-n            Show relative line number in the file
'yourString*' String for search, followed by a wildcard character
-r            Recursively search subdirectories listed
.             Directory for search (current directory)

grep -nr 'MobileAppSer*' . (検索MobileAppServlet.javaorMobileAppServlet.classまたはMobileAppServlet.txt;'MobileAppASer*.*'は、同じことを行う別の方法です。)

さらにパラメータを確認するには、man grepコマンドを使用します。

于 2012-12-17T04:58:37.840 に答える
142
grep -nr string my_directory

追記事項: grep [options] string filenameUnix ライクなシステムでは、ディレクトリは一種のファイルであるため、これは構文を満たしています (Windows では単に「ファイル」と呼ばれるエンティティを具体的に指す「通常のファイル」という用語があります)。

grep -nr string標準入力から検索するコンテンツを読み取ります。そのため、ユーザーからの入力を待機し、^C を押すと停止します (^D で停止します。これは end-of のキーの組み合わせです)。 -ファイル)。

于 2010-11-08T06:54:23.147 に答える
72

GREP : グローバル正規表現プリント/パーサー/プロセッサー/プログラム。
これを使用して、現在のディレクトリを検索できます。
「再帰的」に -R を指定できます。これは、プログラムがすべてのサブフォルダー、それらのサブフォルダー、およびそれらのサブフォルダーのサブフォルダーなどを検索することを意味します。

grep -R "your word" .

-nファイル内で一致した行番号を出力します。
-i大文字/小文字を区別せずに検索します。

grep -inR "your regex pattern" .
于 2010-11-08T07:14:29.213 に答える
34

次のものもあります。

find directory_name -type f -print0 | xargs -0 grep -li word

しかし、初心者には少し多いかもしれません。

findは汎用のディレクトリ walker/lister であり、-type f「ディレクトリや名前付きパイプではなくプレーン ファイルを探す」という意味であり、 -print0「null 文字を区切り文字として使用して標準出力に出力する」という意味です。からの出力findは に送信されxargs -0、(コマンド ラインの長さの制限を回避するために) ヌル文字を (標準の改行ではなく) レコード セパレータとして使用して標準入力をチャンクで取得しgrep -li word、ファイルの各セットに適用します。ではgrep-l「一致するファイルをリストする」ことを-i意味し、「大文字と小文字を区別しない」ことを意味します。通常は 1 文字のオプションを組み合わせることができるので、-liより頻繁に表示されます-l -i

使用しない-print0-0、スペースを含むファイル名で問題が発生するため、スペースを使用することをお勧めします。

于 2010-11-08T07:40:26.380 に答える
25
grep -nr search_string search_dir

search_string の RECURSIVE (ディレクトリとそのすべてのサブディレクトリを意味する) 検索を行います。(ustaが正しく答えたように)。

友人の提案に対して、あなたが何の答えも得られなかった理由:

grep -nr string

ディレクトリが指定されていないためです。検索を実行するディレクトリにいる場合は、次の手順を実行する必要があります。

grep -nr string .

「.」を含めることが重要です。これは grep にこのディレクトリを検索するように指示するためです。

于 2010-11-08T06:59:08.100 に答える
5

私が使用したい別のオプション:

find folder_name -type f -exec grep your_text  {} \;

-type f はファイルのみを返し、フォルダーは返しません

-exec および {} は、検索で見つかったファイルに対して grep を実行します (正確な構文は「-exec コマンド {}」です)。

于 2013-06-03T14:46:11.770 に答える
-3

grep を使用しないでください。Silver Searcherまたはripgrepをダウンロードします。どちらも優れており、オプションが豊富な grep や ack よりもはるかに高速です。

于 2017-07-25T02:08:20.390 に答える