GNU/Linux >> Tutoriels Linux >  >> Linux

Recherche de plusieurs motifs (mots) avec ack ?

Pour ag , à partir de la version 0.19.2, la recherche par défaut dans les répertoires et les fichiers est récursive.

Pour rechercher plusieurs modèles, vous pouvez utiliser une syntaxe similaire comme ack

ag 'pattern1|pattern2'

recherchera à la fois pattern1 et pattern2 .

Si vous ne souhaitez pas effectuer de recherche récursive, vous pouvez définir la profondeur de recherche sur 1 à l'aide du commutateur --depth NUM

Par conséquent,

ag 'pattern1|pattern2' --depth 1

recherchera uniquement dans le répertoire courant pour les deux modèles.


Cela devrait suffire :

ack -R 'string1|string2'

Comme -R est la valeur par défaut, vous pouvez l'omettre :

ack 'string1|string2'

À partir de man ack :

-r , -R , --recurse

Recurse dans les sous-répertoires. C'est la valeur par défaut et juste ici pour la compatibilité avec grep. Vous pouvez également l'utiliser pour désactiver --no-recurseoff.

Si vous souhaitez obtenir le modèle à partir d'un fichier, par exemple /path/to/patterns.file, vous pouvez utiliser :

ack "$(cat /path/to/patterns.file)"

ou de manière équivalente :

ack "$(< /path/to/patterns.file)"

Je ne trouve pas d'équivalent exact à grep -f .


La commande ack peut également contenir des chaînes avec des tubes. Par exemple, le premier ack trouve les fichiers contenant pattern1 puis dirigez-le vers un autre accusé de réception pour rechercher uniquement ces fichiers pour motif2

ack -l 'pattern1' | ack -x 'pattern2'

Le -l Le paramètre signifie simplement lister les fichiers correspondants (au lieu du texte correspondant). Le -x Le paramètre signifie rechercher uniquement les fichiers qui lui sont redirigés. Ceci est similaire à la réduction des fichiers pour la prochaine recherche d'accusé de réception.

ack -l 'pattern1' | ack -xl 'pattern2' | ack -x 'pattern3'

Ceci est un ET et non l'opérateur OU donné dans les autres solutions.


Linux
  1. Utilisation de plusieurs modèles à la fois avec la commande Sed

  2. Comment exécuter Grep avec plusieurs et modèles ?

  3. Comment faire correspondre les modèles insensibles à la casse avec Ls ?

  4. Rechercher dans le compartiment S3 avec des journaux ?

  5. Rechercher des fichiers avec Gui ?

Comment rechercher des fichiers sous Linux avec la commande Find

Comment Grep pour plusieurs chaînes et modèles

Comment gérer plusieurs versions de Java avec jEnv sous Linux

Comment installer et utiliser la commande Ack sous Linux avec des exemples

Linux recherche une chaîne dans des dossiers et des fichiers avec ack

Comment rechercher LDAP à l'aide de ldapsearch (avec exemples)