Gitリポジトリを検索していますが、.git
フォルダーを含めたいです。
grep
を実行すると、このフォルダーは含まれません
grep -r search *
このフォルダーを含めるgrepコマンドは何ですか?
あなたがしていることのより良い代替手段として、この投稿の最後にある解決策を参照してください。
隠しファイルを明示的に含めることができます(ディレクトリはファイルでもあります)。
grep -r search * .*
*
は隠しファイルを除くすべてのファイルに一致し、.*
は隠しファイルのみに一致します。ただし、特定のディレクトリに非隠しファイルまたは隠しファイルがない場合、これは失敗します。もちろん、.git
の代わりに.*
を明示的に追加することもできます。
ただし、特定のディレクトリを単に検索する場合は、次のようにします。
grep -r search .
.
は現在のパスと一致します。これには、非隠しファイルと隠しファイルの両方が含まれます。
私はこの問題にぶつかりましたが、@ bitmaskの答えに基づいて、@ seheが指摘した問題を回避するための簡単な変更を以下に示します。
grep -r search_string * .[^.]*
「grep」と「find」コマンドを組み合わせて、次のような完全なソリューションを作成することをお勧めします。
find . -exec grep -Hn search {} \;
このコマンドは、隠しファイルまたはディレクトリ内で文字列「search」を検索し、この出力形式と一致するファイルをリストします。
ファイルパス:行番号:一致する行
./foo/bar:42:search line
./foo/.bar:42:search line
./.foo/bar:42:search line
./.foo/.bar:42:search line
現在のディレクトリを検索している場合は、この方法を使用できます(そうでない場合は、目的のディレクトリに置き換えます)。
find . -type f | xargs grep search
または、トップレベルで検索するだけの場合(これらを試してみるとテストが速くなります):
find . -type f -maxdepth 1 | xargs grep search
更新:Scottのコメントに応じて例を変更しました。 「-type f」も追加しました。
他のすべての答えが優れています。これは覚えやすいかもしれません:
find . -type f | xargs grep search
ファイル(非表示を含む)のみを検索し、各ファイルをgrepsします。
隠しファイルではない.
と..
が一致しないようにするには、この例のようにls -A
とともにgrep
を使用できます。
ls -A | grep "^\."
^\.
は、最初の文字が.
でなければならないことを示しています
-A
または--almost-all
オプションは、結果.
および..
を除外するため、非表示のファイルとディレクトリのみが一致します。
特定のフォルダー内でのみ検索するには、次を使用できます。
ls -al | grep " \."
リストしてgrepにパイプするのは非常に簡単なコマンドです。
現在の場所からすべての隠しファイルとディレクトリのみを検索するには:
find . -name ".*" -exec grep -rs search {} \;
すべての隠しファイルのみ:
find . -name ".*" -type f -exec grep -s search {} \;
すべての隠しディレクトリのみ:
find . -name ".*" -type d -exec grep -rs search {} \;
タイラーの提案に加えて、隠しファイルを含むすべてのファイルとフォルダーを再帰的にgrepするコマンドがあります
find . -name "*.*" -exec grep -li 'search' {} \;