コンテンツの一部としてファイルを探す

コンテンツの一部としてファイルを探す

特定のリポジトリに多数のファイルがあり、コンテンツに特定の文字列を含むファイルを見つける必要があります(実際にはファイルを参照Version.cc.in)。それを見つけるための最良の解決策は何ですか?

答え1

grepを使用できます。

grep "text" /path/to/directory/*

-r再帰検索にはgrepオプションを使用できます。

grep -r "text" /path/to/directory/*

または**パス:

grep "text" /path/to/directory/**/*

ただし、**オペレータの可用性はシェルによって異なります。私が知っている限りzshbash4つだけ?)他のシェルでは使用できない可能性があります。

答え2

というファイルを使用できます。確認する。説明は次のとおりです。

ack は、大規模で異機種のソースコードツリーを使用するプログラマ向けに設計された grep に似たツールです。

基本的にファイルからパターンを検索するという点でgrepに似ていますが、いくつかの重要な違いがあります。つまり、デフォルトではバージョン管理ファイルとバックアップファイル(CVS、.svn、foo〜、#foo#など)を無視して繰り返し検索します。 Perlで作られているのでクロスプラットフォームです。また、検索するディレクトリの特定のファイル形式を指定できるため、Perlファイルのみを検索する場合は、次のように入力できます。

ack --perl pattern

興味があれば、ウェブサイトで「Grepの代わりにackを使用する10の理由」のリストを見つけることができます。ホームページを確認。また、Vimプラグイン

答え3

同様のツールがあります確認すると呼ばれる銀を探す人。開発者は、これは「ackに似ていますが、より良いです。高速です。信じられないほど高速です。より速い唯一の方法は、Exuberant Ctagsのように事前にインデックス付けされたものです」と主張しています。

答え4

実際のコンテンツではないファイルのみを検索して一覧表示するには、-lgrepオプションを使用します。

grep -lr Version.cc.in $(pwd)/*

これにより、絶対パスとともにすべてのファイルのリストが提供されます(ファイルが現在の作業ディレクトリのディレクトリ/サブディレクトリにあると仮定します)。

関連情報