ターミナルで特定のテキストを含むファイルを見つける方法


168

特定のテキスト文字列を含むすべてのファイルを検索したいです。ターミナルでどうしますか?


ただし、高速な結果が必要な場合は、Spotlightを使用してください。また、PDFやODFなど、必ずしもファイル内にテキストを直接保存する必要のないファイルを検索する場合も同様です。
ジョーイ

良いアドバイスですが、私の場合、ファイルがネットワークドライバー上にあるため、ファイルのインデックスが作成されているかどうかわかりません。また、特定のプログラムに属するxmlファイルでもあります。
Svish

見てみましょうunix.stackexchange.com/a/37932/213832このソリューションがうまく機能
boyd4715

回答:


280
grep -r 'text goes here' path_goes_here

1
man grepgrepのすべての素晴らしいオプションを発見することをお勧めします
Ludovic Kuty

これは、パスに存在するすべてのファイルをリストして追加しNo such file or directory ます。テキストの出現のリストだけを取得しようとしています。どうすればそのリストを入手できますか?
CP3O

7
わかった: grep -lr "text pattern" ./ -s; grep -lr "text pattern" [PATH OF PARENT] -s
CP3O

ただし、これはファイルの詳細(名前、パス)ではなく、一致するファイルの内容を返します。@ CP3Oの提案は機能します。
地理理論

28

スポットライトを使用する

mdfind "text goes here"
mdfind -onlyin /home/user/Desktop -live "live update"

見ることを忘れないでください:

man mdfind

2
これは、スポットライトがインデックス付けしないファイル(つまり、隠しフォルダー内のファイル、システム構成ファイルなど)に対して機能しますか?
ピーターバーグ

Grepは.xlsxファイルを解析しないようですが、これはうまくいきました。別の簡単な例:mdfind -onlyin。「searchtext」
-FvD

11
  1. Ackを通して

brew install ack ack "text goes here"

  1. 検索を通じて

find . |grep "text goes here"

  1. grep経由

grep -RnslI "text goes here"


4

好みやニーズに応じて、以下のいずれかを選択できます。テキストを含むファイルを検索する必要がある場合、「非同期」、現在のディレクトリで再帰的に、以下のいずれかの方法で検索できます。

grepを使用する ここに画像の説明を入力してください

ackを使用する ここに画像の説明を入力してください


2

Ignacioの回答は素晴らしく、特定のテキストを含むファイルを見つけるのに役立ちました。私が直面していた唯一の問題は、このコマンドを実行すると、パターンが表示されなかったファイルを含むすべてのファイルが一覧表示されることでした。

No such file or directory これは、パターンを含まないファイルと一緒に表示されるものです。

代わり-sに、次のようにコマンドに追加する場合: grep -lr "text pattern" ./ -s; grep -lr "text pattern" [PATH DIRECTORY] -sを使用すると、パターンを含むファイルのみが表示されます。

同様にgrep -nr "text pattern" ./ -sgrep -nr "text pattern" [PATH OF DIRECTORY] -sコマンドを使用すると、ファイルと行番号、およびパターンの出現が出力されます。

私の理解が間違っている場合は修正してください。

参照:grepで「No such file or directory」エラーを出力しないようにするにはどうすればよいですか?


こうした厄介なNo fileファイルエラーを回避する別の方法は、stderrをnullにパイプすることです。grep ... 2>/dev/null。このソリューションは、stdoutではなくstderrストリームでエラーメッセージを報告するため、ほとんどのプログラムで機能します。私は多くのファイルに対して許可が拒否さfindれたと言うので、このソリューションを何度も使用しました。
jpaugh

(1)No such file or directory存在するファイルのメッセージを受け取っている場合は、何か間違っているか、システムが壊れています。(2)何と関係が[PATH OF PARENT]ありますか?
G-マン

@ G-Man私は答えを編集して、[PATH OF DIRECTORY]慣れていない人がなぜ私が入れたのか知りたいと思っていることを示すために./
-CP3O

@ G-Man私はUbuntuではなくMacを使用しています。私のシステムがどのように壊れるかはわかりませんが、まだ何もしていません。
CP3O
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.