web-dev-qa-db-ja.com

隠しファイルをgrepするにはどうすればよいですか?

Gitリポジトリを検索していますが、.gitフォルダーを含めたいです。

grepを実行すると、このフォルダーは含まれません

grep -r search *

このフォルダーを含めるgrepコマンドは何ですか?

85
Steven Penny

あなたがしていることのより良い代替手段として、この投稿の最後にある解決策を参照してください。

隠しファイルを明示的に含めることができます(ディレクトリはファイルでもあります)。

grep -r search * .*

*は隠しファイルを除くすべてのファイルに一致し、.*は隠しファイルのみに一致します。ただし、特定のディレクトリに非隠しファイルまたは隠しファイルがない場合、これは失敗します。もちろん、.gitの代わりに.*を明示的に追加することもできます。

ただし、特定のディレクトリを単に検索する場合は、次のようにします。

grep -r search .

.は現在のパスと一致します。これには、非隠しファイルと隠しファイルの両方が含まれます。

116
bitmask

私はこの問題にぶつかりましたが、@ bitmaskの答えに基づいて、@ seheが指摘した問題を回避するための簡単な変更を以下に示します。

grep -r search_string * .[^.]*
7
insaner

「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
3
Olvathar

現在のディレクトリを検索している場合は、この方法を使用できます(そうでない場合は、目的のディレクトリに置き換えます)。

find . -type f | xargs grep search

または、トップレベルで検索するだけの場合(これらを試してみるとテストが速くなります):

find . -type f -maxdepth 1 | xargs grep search

更新:Scottのコメントに応じて例を変更しました。 「-type f」も追加しました。

2
Alan

他のすべての答えが優れています。これは覚えやすいかもしれません:

find . -type f | xargs grep search

ファイル(非表示を含む)のみを検索し、各ファイルをgrepsします。

1
PrashantB

隠しファイルではない...が一致しないようにするには、この例のようにls -Aとともにgrepを使用できます。

ls -A | grep "^\."

^\.は、最初の文字が.でなければならないことを示しています

-Aまたは--almost-allオプションは、結果.および..を除外するため、非表示のファイルとディレクトリのみが一致します。

0
mchid

特定のフォルダー内でのみ検索するには、次を使用できます。

ls -al | grep " \."

リストしてgrepにパイプするのは非常に簡単なコマンドです。

0
user10369828

現在の場所からすべての隠しファイルとディレクトリのみを検索するには:

find . -name ".*" -exec grep -rs search {} \;

すべての隠しファイルのみ:

find . -name ".*" -type f -exec grep -s search {} \;

すべての隠しディレクトリのみ:

find . -name ".*" -type d -exec grep -rs search {} \;
0
Tyler Christian

タイラーの提案に加えて、隠しファイルを含むすべてのファイルとフォルダーを再帰的にgrepするコマンドがあります

find . -name "*.*" -exec grep -li 'search' {} \;
0
nikhilgoel1985