Commande Unix à la Liste des fichiers contenant la chaîne de mais *PAS* contenant une autre chaîne

Comment puis-je récursivement afficher une liste de fichiers qui a une chaîne de caractères et plus précisément de ne pas disposer d'une autre chaîne? Aussi, je veux dire à évaluer le texte les fichiers, pas les noms de fichiers.


Conclusion:

Que par les commentaires, j'ai fini par utiliser:

find . -name "*.html" -exec grep -lR 'base\-maps' {} \; | xargs grep -L 'base\-maps\-bot'

Cette retourné fichiers avec "cartes de base" et non pas "cartes de base-bot". Merci!!!!!

  • La plus simple façon est d'utiliser grep -l à la liste des fichiers correspondant à un modèle, puis de la pipe que pour grep -v.
  • Appartient sur superuser.com
  • Mikel: Cependant, il va de la pipe seulement les noms de fichier à l'autre grep qui à son tour peut filtrer uniquement à partir de ces noms de fichier et non pas le contenu du fichier.
  • J'ai essayé, et d'accord avec Alan qu'il ne les filtres de fichiers. Ainsi, il n'est pas accomplir ce que j'espère.
  • Ne pouvez pas vous passer grep un fileset, et si oui, pouvez pas vous passer une fileset basé sur un autre grep? C'est juste moi d'imaginer les possibilités, mais si quelqu'un savait comment faire, ce serait génial 😀
  • Matrym: quelque Chose de semblable à ls -1 *.html | xargs grep -l '<foo>' - | xargs grep -L '<bar>' - peut être fait, comme il a été indiqué par Ponceuse Marechal.

InformationsquelleAutor Matrym | 2011-02-14