Je veux rechercher une chaîne de texte dans tous les fichiers d'un répertoire (et non pas dans ses sous-répertoires ; je sais que l'option -r
le fait, mais ce n'est pas ce que je veux).
-
Running
grep "string" /path/to/dir
est censé pouvoir faire cela, j'ai lu, mais il me donne l'erreur :
grep : dir : est un répertoire
-
Ensuite, j'ai essayé de lancer
grep
sur plusieurs fichiers.grep "string" .bashrc .bash_aliases
fonctionne parfaitement.grep "string" .bash*
fonctionne également comme prévu.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'obtiens pas les lignes correspondantes. J'ai essayé d'utiliser la fonction -s
mais en vain.
Donc, mes questions :
-
Pourquoi ne suis-je pas en mesure d'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.
Modifier : Quand je dis "utiliser grep sur un répertoire", je veux dire "rechercher dans tous les fichiers de ce répertoire en excluant 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. Est-ce que je me trompe ? -
S'il vous plaît, donnez-moi une explication sur le fonctionnement de
grep
qui expliquerait le comportement des commandes dans (2).
Modifier : Permettez-moi d'être plus précis. Pourquoi l'utilisation de caractères génériques pour spécifier plusieurs fichiers dans lesquels effectuer une recherche fonctionne-t-elle avec.bash*
et non avec*
ou même./*
? -
Comment puis-je rechercher tous les fichiers d'un répertoire (et non pas ses sous-répertoires) en utilisant la commande
grep
?