すべてのC#ソースファイル(_.cs
_)のディレクトリ/サブディレクトリで関数GetTypes()
を見つける必要があるとしましょう。
_grep -rn GetTypes *.cs
_を使用しましたが、_grep: *.cs: No such file or directory
_でエラーが発生しました。 _grep -rn GetTypes *
_を使用する必要がありましたが、この場合は_*.cs
_だけではなく、すべてのファイルが表示されます。
_.cs
_ファイルでのみ文字列を検索するには、どのコマンドを使用する必要がありますか?
シェルがbash≥4の場合、shopt -s globstar
を~/.bashrc
に入れます。シェルがzshであれば、問題ありません。その後、実行できます
grep -n GetTypes **/*.cs
**/*.cs
は、現在のディレクトリまたはそのサブディレクトリで*.cs
に一致するすべてのファイルを再帰的に意味します。
**
をサポートするシェルを実行していないが、grepが--include
をサポートしている場合、再帰的なgrepを実行し、grep
に特定のパターンに一致するファイルのみを考慮するように指示できます。ファイル名パターンを囲む引用符に注意してください。これはシェルではなく、grepによって解釈されます。
grep -rn --include='*.cs' GetTypes .
ポータブルツールのみ(一部のシステムにはgrep -r
がまったくない)の場合、ディレクトリトラバーサル部分にはfind
を、テキスト検索部分にはgrep
を使用します。
find . -name '*.cs' -exec grep -n GetTypes {} +
あなたは ack
として知られているビリアントの小さなgrep/find置換をチェックアウトするべきです。これは特に、ソースコードファイルのディレクトリを検索するための設定です。
コマンドは次のようになります。
ack --csharp GetTypes
私はfindとgrepの組み合わせを使用しています:
find . -name "*.cs" | xargs grep "GetTypes" -bn --color=auto
find
の場合、.
をディレクトリで置き換え、-name
を削除して、すべてのファイルを調べることができます。
grep
の場合、-bn
は位置と行番号を出力し、--color
は探しているものを強調表示して目を助けます。
GNU grep
を使用する場合、再帰的なディレクトリトラバーサルに含めるファイルを指定できます。
grep --include '*.cs' -rn GetTypes .
(最後のピリオドは、トラバーサルのルートとして現在の作業ディレクトリを示します)