Lorsque j'utilise find
, comment puis-je retourner le nom de fichier et le numéro de ligne lors de la recherche d'une chaîne? J'arrive à renvoyer le nom de fichier dans une commande et les numéros de ligne avec une autre, mais je n'arrive pas à les combiner.
Noms de fichiers: find . -type f -exec grep -l 'string to search' {} \;
Numéros de ligne: find . -type f -exec grep -n 'string to search' {} \;
Le commutateur de ligne de commande -H
force grep
à imprimer le nom du fichier, même avec un seul fichier.
% grep -n 7 test.in
7:7
% grep -Hn 7 test.in
test.in:7:7
-H, --with-filename
Print the filename for each match.
Notez que comme Kojiro dit dans n commentaire , cela ne fait pas partie de la norme POSIX; il est dans les deux GNU et BSD grep, mais il est possible que certains systèmes ne l'aient pas (par exemple Solaris).
find . -type f -exec grep -n 'string to search' /dev/null {} +
(ou avec GNU grep, voir le -H
option)