-r
を含むGrepが機能していませんでした。
その後、テスト状況を作成しました。ディレクトリ/home/den/backup
には、Word washer
を含むファイルが含まれるようになりました。また、/home/den/backup
内にサブディレクトリを作成しました。そのディレクトリでは、ファイルにWord washer
が含まれています。以下は、/home/den/backup/great.txt
と/home/den/backup/aaa/info.txt
で2つのヒットを返すはずです。
私が発行する場合
grep -r "washer" /home/den/backup/*.*
結果は1ヒットです。
私が発行する場合
grep -r "washer" /home/den/backup/aaa/*.*
結果は1ヒットです。
最初のものは2番目のものも見つけてはいけませんか?
set -x
を使用してシェルをデバッグモードに設定すると、ここで何が起こっているかを確認できます。
$ set -x
$ grep -r "washer" /home/steeldriver/backup/*.*
+ grep --color=auto -r washer /home/steeldriver/backup/great.txt
washer
つまり、シェルは*.*
を展開し、単一ファイルgreat.txt
に一致しているので、grep
はその単一ファイルを検索します。
ディレクトリ全体を再帰的に検索する場合は、引数としてディレクトリを指定します。
$ grep -r "washer" /home/steeldriver/backup/
+ grep --color=auto -r washer /home/steeldriver/backup/
/home/steeldriver/backup/aaa/info.txt:washer
/home/steeldriver/backup/great.txt:washer
(set +x
を使用して、デバッグモードを再びオフにできます)