J'utilise Solaris 10 et j'ai deux versions grep
une dans /usr/bin
et un dans /usr/xpg4/bin
. Je cherche une réponse à la recherche sur la recherche de texte dans les fichiers dans les sous-dossiers d'un répertoire parent à l'aide de grep
. Toutes les réponses parlent de -r
ou -R
Commutateurs que je n'ai pas disponibles avec ma version de grep
.
La syntaxe standard (POSIX) est la suivante:
find /path/to/parent -type f -exec grep 'XXX' /dev/null {} +
(les /dev/null
est de vous assurer que grep
imprime toujours un nom de fichier). Cela fonctionnera sur tous les systèmes POSIX, y compris Solaris. Les seuls systèmes post-90 connus où ce qui est connu de ne pas travailler est vieux (très vieux maintenant) GNU Systems.
GNU initialement introduit un -print0
prédicat et a -0
Option à xargs
au lieu de cela:
find /path/to/parent -type f -print0 | xargs -0 grep 'XXX' /dev/null
Il existe maintenant quelques autres implémentations qui soutiennent cela, mais pas Solaris.
Au-dessus, en théorie, vous voudriez ajouter -r
option pour éviter de courir grep
s'il n'y a pas de fichier, mais ce n'est pas aussi portable et dans ce cas particulier, ne fait pas de faire une différence fonctionnelle