web-dev-qa-db-fra.com

Comment exclure un fichier spécifique de ack (ack-grep)?

Avec la commande normale grep, il y a une option --exclude (Couverte en détail ici: tilisez la syntaxe grep --exclude/- include pour ne pas grep à travers certains fichiers ) qui vous permet d'ignorer des fichiers spécifiques lorsque vous saluez.

L'option --type D'Ack prend en charge 95% des cas où vous souhaitez exclure des fichiers, mais elle ne gère pas (pour autant que je sache) le cas de l'exclusion d'un fichier spécifique. J'ai un fichier JS compilé qui contient le contenu de tous les autres fichiers JS (sur une seule ligne), donc chaque fois que je sollicite quelque chose Je récupère tout le contenu de ce fichier géant compilé.

Je détesterais devoir abandonner ACK et revenir à grep à ce sujet, mais c'est vraiment ennuyeux. S'il vous plaît, quelqu'un me dit qu'il existe un moyen d'exclure des fichiers spécifiques des recherches d'acquittement.

51
machineghost

Non, ack 1.x ne vous permettra pas d'exclure un seul fichier. Dans ack 2. , vous pouvez. ack 2.0 était actuellement dans sa première alpha est maintenant la version actuelle recommandée de ack.

En ce qui concerne votre cas spécifique du fichier Javascript minifié, quelle version d'ack utilisez-vous? ack 1.96 devrait ignorer le JavaScript minifié basé sur l'extension. Si la vérification d'extension ne fonctionne pas, vous pourriez probablement pirater ack lui-même, car il s'agit d'un seul programme Perl. Vous pouvez pirater le is_searchable fonction.

Dans ack 2.0, nous cherchons à ignorer toute ligne dépassant, disons, 500 caractères car ce n'est clairement pas du code source.

Vous pouvez également nous rejoindre sur la liste de diffusion ack-users . Nous sommes assez réactifs.

10
Andy Lester

Pour ignorer un seul fichier en utilisant ack 2.0, fournissez une spécification de filtre à l'indicateur --ignore-file:

--ignore-file=is:cljout.js

99
jbouwman

Si vous exécutez ack --create-ackrc il produira un tas de préréglages pour des fichiers communs comme javascript minifié, css et des répertoires comme node_modules et .git. Très utile!

Voici l'option js minifiée:

# minified Javascript
--ignore-file=match:/[.-]min[.]js$/
--ignore-file=match:/[.]js[.]min$

Si vous souhaitez l'enregistrer dans .ackrc courir

ack --create-ackrc >> ~/.ackrc

puis supprimez ce dont vous n'avez pas besoin de ce fichier.

10
Rimian

Aussi bon à savoir avec ack2.0, vous pouvez spécifier ces options dans un .ackrc file si vous devez filtrer fréquemment les fichiers.

1
akotian

Si vous souhaitez exclure un dossier spécifique, la commande suivante peut vous aider:

ack keywords --ignore-dir folder_name

man ack fournira plus de détails :)

- [no] ignore-dir = DIRNAME, - [no] ignore-directory = DIRNAME

--ignore-file = FILTERTYPE: FILTERARGS

1
liuyihe