1

ファイル名、ディレクトリ名、およびすべてのファイルのテキスト内でフレーズを検索するための単純な bash コマンドを探しています。ファイルとディレクトリのリストを返す必要があります。理想的には、> myfiles.txt のようなファイルにパイプするオプションが欲しい

何かのようなもの:

find 'my key phrase'
find 'my key phrase' > mylist.txt

戻ります:

/home/stuff/filewithmykeyphraseinit.txt
/home/stuff/a filename with my key phrase.doc
/home/stuff/a directory with my key phrase/another subdirectory/

編集: 現在テストしている素晴らしい提案がたくさんあります。1 つの問題: これらの大文字と小文字を区別しないようにする方法はありますか? -i を grep に追加するとうまくいくと思います。ファイルパス/名前の検索はどうですか? また、出力をテキスト ファイルまたは画面に送信するオプションが必要です。

4

3 に答える 3

4
{ find . -name '*my key phrase*' ;
  grep -rl 'my key phrase' .     ;
} | sort -u > mylist.txt
于 2012-10-12T18:48:17.920 に答える
1

ファイル名を一致させ、ワイルドカードをパターンに追加するように指定するだけです。

find -name '*my key phrase*' > mylist.txt

ファイルの内容を検索するには、grep コマンド (-r再帰オプションまたは rgrep を指定)を使用します。

rgrep -l 'my key phrase' >> mylist.txt
于 2012-10-12T18:41:36.580 に答える
0

1 つのコマンドですべてを実行 (xargs と bash を使用)

find | xargs -I {} bash -c '(([[ -f "{}" ]] && grep -l "my key phrase" "{}") || ([[ "{}" =~ "my key phrase" ]] && echo {}))'
于 2012-10-12T19:09:17.720 に答える