6

git directory を持つディレクトリから特定の文字列を検索する必要があることがよくあります.git/。これは私が使用するコマンドです:

find . -name .git -prune -o -print | xargs grep <string-to-search>

オプションは、-name .git -prune -o -print下のファイルを無視することです.git/。ただし、結果全体を混乱させる多くの「ディレクトリです」メッセージを出力します。例えば、

...
grep: ./reports: Is a directory
grep: ./scripts: Is a directory
grep: ./scripts/js: Is a directory
grep: ./scripts/js/adapter: Is a directory
...

ディレクトリと.git/他のすべてのディレクトリを無視できるようにコマンド ラインを変更する方法(つまり、検索可能なファイルのみを検索する)。

どうやら、この-type fオプションは次の環境ではうまく機能しません。

find -type f . -name .git -prune -o -print
4

4 に答える 4

22

find コマンドは必要ありません。grep を使用してディレクトリ内を検索できます。exclude-dir 構文を使用すると、ディレクトリを無視できます。

grep -r --exclude-dir=".git;.svn" "string to search" <directory>
于 2013-01-01T10:00:23.933 に答える
3

ここで自分の質問に答えます(投票などはせずに):

私は本質的にgit-tracked ディレクトリで特に検索を行っていたので、git grep明らかにはるかに単純で、仕事に適したツールです。最初にこれを提起してくれた @Johnsyweb に感謝します。

grep元の質問で尋ねられた一般的な解決策を提供するため、Vivek の回答を選択しました。

于 2013-02-27T18:46:24.687 に答える