46 votes

Ack résultats manqués (vs grep)

Je suis sûr que je ne suis malentendu quelque chose à propos d'accusé de réception du fichier/répertoire ignorer les valeurs par défaut, mais peut-être que quelqu'un pourrait jeter de la lumière sur cela pour moi:

mbuck$ grep logout -R app/views/
Binary file app/views/shared/._header.html.erb.bak.swp matches
Binary file app/views/shared/._header.html.erb.swp matches
app/views/shared/_header.html.erb.bak: <%= link_to logout_text, logout_path, { :title => logout_text, :class => 'login-menuitem' } %>
mbuck$ ack logout app/views/
mbuck$

Alors que...

mbuck$ ack -u logout app/views/
Binary file app/views/shared/._header.html.erb.bak.swp matches
Binary file app/views/shared/._header.html.erb.swp matches
app/views/shared/_header.html.erb.bak
98:<%= link_to logout_text, logout_path, { :title => logout_text, :class => 'login-menuitem' } %>

Simplement en appelant ack sans options ne peuvent pas trouver le résultat dans un .bak le fichier, mais en l'appelant avec l' --unrestricted option peut trouver le résultat. Aussi loin que je peux dire, cependant, ack ne pas ignorer .bak fichiers par défaut.

Mise à JOUR

Merci pour les commentaires ci-dessous, voici le nouveau contenu de mon ~/.ackrc:

--type-ajouter=ruby=.haml,.râteau
--type-ajouter=css=.moins

52voto

Joachim Sauer Points 133411

ack est la particularité de ne pas disposer d'une liste noire des types de fichiers à ignorer, mais plutôt une liste de types de fichiers qu'il va effectuer la recherche.

Pour citer un extrait de la page de man:

Sans les sélections de fichiers, ack-grep seulement des recherches de fichiers de types qu'il reconnaît. Si vous avez un fichier nommé foo.wango, et ack-grep ne sait pas ce qu'est un .wango fichier, ack-grep ne sera pas la recherche.

(Notez que j'utilise Ubuntu où le binaire est appelé ack-grep en raison d'un conflit de noms)

ack --help-types montrera une liste de types de votre accusé de réception de l'installation prend en charge.

13voto

Andy Lester Points 34051

Si vous avez du mal à choisir les fichiers recherchés par ack, ajoutez simplement l'option -f. Il listera tous les fichiers qu'il trouve être interrogeables.

12voto

nevets1219 Points 3482

ack --man membres de:

Si vous voulez accusé de réception à la recherche de tous les fichiers, même ceux qu'il ignore toujours comme les coredumps et les fichiers de sauvegarde, utilisez la "−u" de l'interrupteur.

et

Pourquoi ne ack ignorer les fichiers inconnus par par défaut? accusé de réception est conçu par un programmeur, pour les programmeurs, pour la recherche de grands arbres de code. La plupart des code avez beaucoup de fichiers en eux qui ne sont pas des fichiers source (comme l'objet compilé les fichiers, contrôle de code source les métadonnées, etc), et grep gaspille beaucoup de temps à chercher à travers toutes ces ainsi et le retour des matchs de ces fichiers.

C'est pourquoi l'accusé de réception du comportement de pas à la recherche des choses qu'il ne reconnaît pas est l'une de ses plus grandes forces: l' la vitesse que vous obtenez à partir de seulement la recherche de la les choses que vous voulez regarder.

EDIT: d'ailleurs si vous regardez le code source, bak fichiers sont ignorés.

5voto

Jonathan Hartley Points 3763

Au lieu de lutter avec ack, vous pouvez simplement utiliser tout simplement le vieux grep, datant de 1973. Puisqu'il utilise des fichiers explicitement en liste noire, au lieu des types de fichiers en liste blanche, il n'oublie jamais les résultats corrects. Avec quelques lignes de configuration (que j'ai créées dans mon répertoire personnel dans les années 1990), grep correspond ou surpasse beaucoup des avantages revendiqués par ack.

Voir ma réponse détaillée ici: http://superuser.com/a/342803/57697

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X