特定のリポジトリに多数のファイルがあり、コンテンツに特定の文字列を含むファイルを見つける必要があります(実際にはファイルを参照Version.cc.in
)。それを見つけるための最良の解決策は何ですか?
答え1
grepを使用できます。
grep "text" /path/to/directory/*
-r
再帰検索にはgrepオプションを使用できます。
grep -r "text" /path/to/directory/*
または**
パス:
grep "text" /path/to/directory/**/*
ただし、**
オペレータの可用性はシェルによって異なります。私が知っている限りzsh
(bash
4つだけ?)他のシェルでは使用できない可能性があります。
答え2
というファイルを使用できます。確認する。説明は次のとおりです。
ack は、大規模で異機種のソースコードツリーを使用するプログラマ向けに設計された grep に似たツールです。
基本的にファイルからパターンを検索するという点でgrepに似ていますが、いくつかの重要な違いがあります。つまり、デフォルトではバージョン管理ファイルとバックアップファイル(CVS、.svn、foo〜、#foo#など)を無視して繰り返し検索します。 Perlで作られているのでクロスプラットフォームです。また、検索するディレクトリの特定のファイル形式を指定できるため、Perlファイルのみを検索する場合は、次のように入力できます。
ack --perl pattern
興味があれば、ウェブサイトで「Grepの代わりにackを使用する10の理由」のリストを見つけることができます。ホームページを確認。また、Vimプラグイン。
答え3
答え4
実際のコンテンツではないファイルのみを検索して一覧表示するには、-l
grepオプションを使用します。
grep -lr Version.cc.in $(pwd)/*
これにより、絶対パスとともにすべてのファイルのリストが提供されます(ファイルが現在の作業ディレクトリのディレクトリ/サブディレクトリにあると仮定します)。