4 votes

Recherche de texte dans une liste de fichiers

J'essaie d'exécuter une double recherche dans les fichiers et de renvoyer les noms de fichiers.

J'utilise

find ./ -iname '*txt' | xargs grep "searchtext" -sl

pour trouver les noms de fichiers contenant le mot "searchtext".

La commande renvoie une liste de fichiers.

Comment puis-je trouver "otherearchtext" dans ces fichiers déjà trouvés et les afficher de la même manière ?

5voto

RedGrittyBrick Points 78148

Transmettre le résultat à un autre grep en utilisant des backticks ou des $() équivalents.

Si vous voulez conserver la liste intermédiaire, utilisez tee

grep -l oranges $(find . -name "*txt" | xargs grep -l apples | tee apples.txt)

1voto

Zepplock Points 6863

Vous pouvez enchaîner xargs grep … :

find . -iname '*txt' | \
    xargs grep -l "searchtext" | \
    xargs grep -l "othersearchtext" | \
    xargs grep -l "yetanothersearchtext"

0voto

Tamir Points 101

Ce bash recherchera plusieurs chaînes de caractères dans un dossier donné de manière récursive et retournera les noms de fichiers.

Utilisation :

findfiles /var/www/ php searchText1 searchText2 searchText3 searchText4

bash : findfiles

#!/bin/sh

DIR=$1
EXT=$2

CMD="find $DIR -iname '*.$EXT' | xargs grep -l '$3' | xargs grep -l '$4' | xargs grep -l '$5' | xargs grep -l '$6' | xargs grep -l '$7' | xargs grep -l '$8' | xargs grep -l '$9'"

eval $CMD

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X