Je veux rechercher une chaîne de texte dans tous les fichiers d'un répertoire (et non dans ses sous-répertoires; je sais que l' -r
option fait cela, mais ce n'est pas ce que je veux).
Fonctionnement
grep "string" /path/to/dir
est censé être en mesure de le faire, j'ai lu, mais cela me donne l'erreur:
grep: dir: est un répertoire
Ensuite, j'ai essayé de courir
grep
sur plusieurs fichiers.grep "string" .bashrc .bash_aliases
fonctionne parfaitement.grep "string" .bash*
fonctionne comme prévu aussi.grep "string" *
me donne les erreurs:grep: data: Is a directory grep: Desktop: Is a directory grep: Documents: Is a directory grep: Downloads: Is a directory ...
Seules les erreurs sont imprimées, je n'ai pas les lignes correspondantes. J'ai essayé d'utiliser l' -s
option, mais en vain.
Alors, mes questions:
Pourquoi ne puis-je pas utiliser
grep
sur un répertoire, comme dans (1), alors que je devrais pouvoir le faire? J'ai vu cela dans de nombreux exemples sur Internet.
Edit : Quand je dis "utiliser grep sur un répertoire", je veux dire "rechercher dans tous les fichiers de ce répertoire à l'exception de ses sous-répertoires". Je crois que c'est ce que fait grep lorsque vous lui passez un répertoire à la place d'un fichier. Suis-je incorrect?Veuillez me donner une explication sur le fonctionnement de
grep
cela qui expliquerait le comportement des commandes dans (2).
Edit : Permettez-moi d'être plus précis. Pourquoi utilise-t-on des caractères génériques pour spécifier plusieurs fichiers dans lesquels rechercher le travail.bash*
et non avec*
ou même./*
?Comment puis-je rechercher tous les fichiers d'un répertoire (et non ses sous-répertoires) en utilisant
grep
?
grep "string" .bash*
aussi avec .
grep "string" * .* 2>/dev/null
ougrep -s "string" * .*
*
, appelés globbing. Globbing n'inclut pas les noms de fichiers commençant par un point tel.bashrc
que standard. Vous pouvez définir les options du shell pour qu'il inclue ces fichiers, mais vous pouvez vous retrouver dans un désordre si vous ne savez pas ce que vous faites. Un bon guide pour comprendre la globalisation peut être trouvé ici mywiki.wooledge.org/glob