Comment utiliser ack pour rechercher un nom de fichier

15

J'ai commencé à utiliser ack qui est beaucoup plus rapide que grep. Cependant, en utilisant ack, je veux rechercher le nom du fichier plutôt que le contenu du fichier. Y-a-t-il un moyen de faire ça?

Nadal
la source

Réponses:

16

Utilisez le bon outil pour le bon travail. Si vous souhaitez rechercher un nom de fichier, utilisez 'find':

$ # search for all *.txt file in current directory
$ find . -iname "*.txt"
Lie Ryan
la source
1
très vrai. "une fois que vous tenez un marteau dans votre main, tout commence à ressembler à un clou" :)
akira
2
Eh bien, ack (et grep) sont plus agréables car vous n'avez pas besoin d'être explicite sur les expressions rationnelles à moins que vous ne le souhaitiez. Je fais habituellement juste unfind . | ack whatev.ext
Ehtesh Choudhury
Cela fonctionne également pour trouver des répertoires.
Pratik Khadloya
1
find et ack se comportent différemment, car ack filtre par défaut un grand nombre de résultats (contenu des répertoires de contrôle de version, objets compilés dans un référentiel source) qui seraient inclus par find. Le meilleur marteau dépend des résultats que vous souhaitez.
Joshua Goldberg
1
Cela ne répond pas à la question ...
lajarre
23
ack -g REGEX

Imprimer les fichiers dont le chemin relatif + le nom de fichier correspondent à REGEX

Danil Kutkevich
la source
1
ajouter [^/]*$à votre REGEX pour rechercher dans le nom de fichier uniquement
Simon
7

Je suis d'accord qu'il est logique d'utiliser find si vous recherchez simplement des fichiers * .txt. Cependant, ack possède de puissantes fonctionnalités de détection de type de fichier, vous pouvez donc utiliser

ack -f --perl

qui trouvera tous les fichiers Perl, en fonction du nom de fichier (* .pm, * .pl, * .t et * .pod) et de la ligne shebang.

Andy Lester
la source
1

Tu peux faire :

ack -f | ack "filename.ext"
Olivier
la source