1322 votes

Comment puis-je utiliser grep pour afficher uniquement les noms de fichiers (pas en ligne de matches) sur linux?

Comment puis-je utiliser grep pour afficher uniquement les noms de fichiers (pas en ligne de matches) sur linux?

Je suis généralement en utilisant quelque chose comme

trouver . -iname "*php" -exec grep -H myString {} \;

Comment puis-je obtenir les noms des fichiers ( avec des chemins), mais sans les matchs? Dois-je utiliser xargs? Ne vois pas le moyen de le faire sur ma page de manuel de grep.

2031voto

Random832 Points 9199

Il y a une option standard grep -l (c'est un L minuscule) qui le fait. Vous pouvez aussi ne pas besoin d' -H dans ce cas.

À partir de l' unix standard:

-l
    (The letter ell.) Write only the names of files containing selected
    lines to standard output. Pathnames are written once per file searched.
    If the standard input is searched, a pathname of (standard input) will
    be written, in the POSIX locale. In other locales, standard input may be
    replaced by something more appropriate in those locales.

174voto

De la grep(1) page de man:

  -l, --files-with-matches
          Suppress  normal  output;  instead  print the name of each input
          file from which output would normally have  been  printed.   The
          scanning  will  stop  on  the  first match.  (-l is specified by
          POSIX.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X