На этот вопрос уже есть ответ здесь:
Grep с -r
у меня не работал.
Затем я создал тестовую ситуацию. В каталоге / home / den / backup
теперь находится файл со словом washer
. Я также создал подкаталог в / home / den / backup
. В этом каталоге файл содержит слово шайба
. Следующее должно вернуть два обращения к /home/den/backup/great.txt
и /home/den/backup/aaa/info.txt
Если я выдам
grep -r "washer" /home/den/backup/*.*
результат это один удар.
Если я введу
grep -r "washer" /home/den/backup/aaa/*.*
, результат будет одно попадание.
Разве первый не должен был также найти второй, который находится в одном, если его подкаталоги?
Вы видите то, что происходит здесь путем установки оболочки в использование режима отладки 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
)