Grep avec -r
ne fonctionnait pas pour moi.
J'ai ensuite fait une situation de test. Le répertoire /home/den/backup
contient maintenant un fichier contenant le mot washer
name__. J'ai également créé un sous-répertoire dans /home/den/backup
. Dans ce répertoire, un fichier contient le Word washer
name__. Les éléments suivants doivent renvoyer deux occurrences à /home/den/backup/great.txt
et /home/den/backup/aaa/info.txt
Si je publie
grep -r "washer" /home/den/backup/*.*
le résultat est un coup.
Si je publie
grep -r "washer" /home/den/backup/aaa/*.*
le résultat est un coup.
Le premier n'aurait-il pas dû également trouver le second, qui est dans l'un de ses sous-répertoires?
Vous pouvez voir ce qui se passe ici en mettant le shell en mode débogage à l'aide de set -x
$ set -x
$ grep -r "washer" /home/steeldriver/backup/*.*
+ grep --color=auto -r washer /home/steeldriver/backup/great.txt
washer
c'est-à-dire que le shell développe *.*
et correspond au fichier unique great.txt
- so grep
recherche dans ce fichier unique.
Si vous voulez rechercher récursivement tout répertoire, donnez simplement le répertoire comme argument:
$ 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
(Vous pouvez désactiver le mode de débogage à l'aide de set +x
)