Recherche étendue avec ack ou grep


11

Lorsque je recherche par exemple mon répertoire personnel avec ack(ou grep), je veux normalement savoir où j'ai défini une option spécifique.

Étant donné que la plupart des fichiers de configuration sont très proches, ~cela accélérerait considérablement acksi je pouvais rechercher en premier. Est-ce possible?


1
Malheureusement, la réponse semble être non.
Nifle

4
Il semble que tous les deux mois, je google ceci et reviens à cette page.
Gregory Nisbet

2
@GregoryNisbet Ma «solution» a été de passer à ag, ce qui est environ 5 à 10 fois plus rapide acket ne présente aucun inconvénient. Combiné avec le passage au SSD, je n'ai pas eu de problème depuis.
Profpatsch

Réponses:


3

Je ne sais pas ackmais avec des outils comme ceux que grepj'utilise généralement:

( find . -maxdepth 1 -print ; find . -mindepth 2 -print ) | xargs -n 50 -exec grep TXT

La partie entre (et )garantit que d'abord les fichiers au niveau 1 sont répertoriés et ensuite ceux à 2 et plus profonds (vous pouvez varier). xargsalimente les noms de fichiers par 50 à grep.

Bien sûr, cela dépend de la variante de finddisponible sur votre plate-forme. Si vous exécutez quelque chose d'il y a 30 ans, vous devrez utiliser quelque chose comme le tri sur le nombre de barres obliques.


MMV (Archlinux):grep: ./.macromedia/Flash_Player/#SharedObjects/Q2GSRK6Y/www.mixcloud.com/media: Is a directory
xtian

Si vous n'allez pas utiliser -print0pour trouver, faites-le au moins find . -maxdepth 1 -exec grep {} +;. mywiki.wooledge.org/BashFAQ/020
Expiation limitée du
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.