2017-11-01 12 views
0

テキストを検索しようとしました。grepオプションについて2件の場合

以下の2つの違いは何ですか?

grep -r "text" ./* 
grep -r "text" . 
+0

。現在のディレクトリを意味します ./*は現在のディレクトリの下にあるすべての要素を意味します たとえば、lsの動作は2つの状況で大きく異なります。grepの場合、再帰モードを使用しているため同じです。 両方のコマンドの結果を2つの異なる出力ファイルに出力し、それらの間で差分を作成できることを確認してください!可能ならば – Allan

+0

'strace'コマンドを試してみてください。 –

+0

@ Karthikeyanなぜstraceの使用をお勧めしますか? straceはプロセスのすべての低レベルシステムをダンプします。私はgrepでstraceの使用例を探しました...そしてgrepはstraceからの出力の(しばしば大量の)ボリュームを制限するために確かに有用です。あるいは、他のユースケースを想定していますか? –

答えて

1

どちらのコマンドは、下位ディレクトリからcurrent directoryおよびファイルからファイルを取得...しかし./*は、~/.bashrcとして.で始まる名前を持つすべてのhidden files and directoriesを除外します。

grep -r "text" ./* 
grep -r "text" . 

-rフラグは、再帰的な検索を実行することを意味し、.は、現在のディレクトリを使用することを意味し、*が指定したディレクトリ内のすべての非隠しファイルを使用することを意味します。再帰的検索とは、このディレクトリ内のすべてのファイルとすべてのサブディレクトリ内のすべてのファイルが処理されることを意味します。

しかし外見上より包括的な./*はいくつかのファイルを逆説的に欠場します。ユーザーアカウントの最上位レベルからUNIXのようなOSから検索していた場合、欠落しているファイルの重要なカテゴリの1つは、〜/ .bashrcのように、rc filesの多くです。

+1

'./*'または '*'は隠しファイルと一致しません。 '.'はそれらにマッチします。 – thanasisp

+0

マイスリップをキャッチするために@thanasispに感謝します。あなたの修正は私の答えに組み込まれました。 –

関連する問題