2012-07-24 3 views
41

Mit dem normalen grep Befehl gibt es eine --exclude Option (hier im Detail behandelt: Use grep --exclude/--include syntax to not grep through certain files), mit der Sie bestimmte Dateien ignorieren können, wenn Sie greppen.Wie schließt man eine bestimmte Datei von ack (ack-grep) aus?

Acks --type Option kümmert sich um 95% der Fälle, in denen Sie Dateien ausschließen möchten, aber es geht nicht (soweit ich das beurteilen kann) um den Fall, dass eine bestimmte Datei ausgeschlossen wird. Ich habe eine kompilierte JS-Datei, die den Inhalt von jeder anderen JS-Datei enthält (in einer einzigen Zeile), so dass ich jedes Mal, wenn ich nach schreibe, den gesamten Inhalt dieser riesigen kompilierten Datei zurückbekomme.

Ich würde hassen auf ack aufgeben und zurück zu grep über diese gehen, aber es ist wirklich nervig. Bitte, jemand sagt mir, es gibt eine Möglichkeit, bestimmte Dateien von ack-Suchen auszuschließen.

Antwort

11

Nein, mit ack 1.x können Sie keine einzelne Datei ausschließen. In ack 2.0 können Sie. ack 2.0 war zur Zeit in seiner ersten Alpha ist jetzt die aktuelle empfohlene Version von ack.

Was für einen speziellen Fall der minimierten Javascript-Datei, welche Version von ack verwenden Sie? ack 1.96 sollte minimiertes JavaScript basierend auf der Erweiterung ignorieren. Wenn der Erweiterungscheck nicht funktioniert, könntest du wahrscheinlich selbst einen Haken machen, da es ein einzelnes Perl-Programm ist. Sie können die is_searchable Funktion hacken.

In ack 2.0, ignorieren wir jede Zeile über 500 Zeichen, weil es eindeutig kein Quellcode ist.

Sie können auch auf der Mailingliste ack-users mitmachen. Wir sind sehr entgegenkommend.

+0

In der Tat, meine nächste Station würde die Ack-Mailing-Liste sein, aber ich dachte, ich würde hier zuerst nachsehen, um sicherzustellen, dass ich nicht etwas Offensichtliches vermisse :-) Danke Andy. – machineghost

+0

P.S. Ich wähle den Dateinamen für meine kompilierte JS-Datei, daher ist es im Moment nur built.js. Ich werde versuchen, es in built.min.js umzubenennen und zu sehen, ob das hilft. – machineghost

84

eine einzelne Datei ack 2.0, bieten mit ignorieren einen Filter spec auf die --ignore-Datei Flagge:

--ignore-file=is:cljout.js

+1

Was macht das '' hier? –

+3

Genaue Übereinstimmung des Dateinamens. http://beyondgrep.com/documentation/ack-2.04-man.html#is_filename –

+4

Dies funktioniert für mich auf Dateinamen, aber nicht, wenn ich eine bestimmte Datei (d. h. Pfad und Dateiname) geben möchte. – tremby

1

Auch gut mit ack2.0 zu kennen, können Sie diese Optionen in a .ackrc file wenn Sie häufig Dateien filtern müssen.

2

Wenn Sie ack --create-ackrc ausführen, wird eine ganze Reihe von Voreinstellungen für gängige Dateien wie minimiertes Javascript, CSS und Verzeichnisse wie node_modules und .git ausgegeben. Sehr hilfreich!

Hier ist die verkleinerte js Option:

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

Wenn Sie dies .ackrc Lauf

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

speichern möchten, und dann löschen, was Sie nicht aus dieser Datei benötigen Sie.