18 votes

Comment utiliser ack pour rechercher un nom de fichier

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 son contenu. Existe-t-il un moyen de le faire ?

25voto

Denis Ryzhkov Points 141
ack -g REGEX

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

1 votes

Ajouter [^/]*$ à votre REGEX pour rechercher uniquement dans le nom du fichier

17voto

Lie Ryan Points 4241

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

$ # search for all *.txt file in current directory
$ find . -iname "*.txt"

1 votes

Très vrai. "Une fois que vous tenez un marteau dans votre main, tout commence à ressembler à un clou" :)

2 votes

Eh bien, ack (et grep) sont plus agréables parce que vous n'avez pas besoin d'être explicite sur les regex, sauf si vous le voulez. En général, je fais juste un find . | ack whatev.ext

0 votes

Cela fonctionne également pour trouver des répertoires.

9voto

Andy Lester Points 1173

Je conviens qu'il est logique d'utiliser find si vous recherchez uniquement 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 se basant à la fois sur le nom du fichier (*.pm, *.pl, *.t et *.pod) et sur la ligne shebang.

1voto

OlivierLarue Points 216

Vous pouvez faire :

ack -f | ack "filename.ext"

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