Wie man ack benutzt, um nach dem Dateinamen zu suchen


15

Ich habe angefangen, ack zu verwenden, das viel schneller ist als grep. Mit ack möchte ich jedoch nach Dateinamen und nicht nach Dateiinhalten suchen. Gibt es eine Möglichkeit, das zu tun?

Antworten:


16

Verwenden Sie das richtige Werkzeug für den richtigen Job. Wenn Sie nach Dateinamen suchen möchten, verwenden Sie 'find':

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

1
sehr richtig. "Sobald Sie einen Hammer in der Hand halten, fängt alles an, wie ein Nagel auszusehen" :)
Akira

2
Nun, ack (und grep) sind netter, weil Sie sich nicht explizit mit Regexen auseinandersetzen müssen, es sei denn, Sie möchten. Normalerweise mache ich nur einenfind . | ack whatev.ext
Ehtesh Choudhury

Dies funktioniert auch beim Auffinden von Verzeichnissen.
Pratik Khadloya

1
find und ack verhalten sich unterschiedlich, da ack standardmäßig viele Ergebnisse (Inhalte von Versionskontrollverzeichnissen, kompilierte Objekte in einem Quellrepository) herausfiltert, die von find eingeschlossen würden. Der beste Hammer hängt von den gewünschten Ergebnissen ab.
Joshua Goldberg

1
Dies beantwortet nicht die Frage ...
lajarre

23
ack -g REGEX

Druckt Dateien, deren relativer Pfad + Dateiname mit REGEX übereinstimmt


1
füge [^/]*$deiner REGEX hinzu, um nur im Dateinamen zu suchen
simon

7

Ich bin damit einverstanden, dass es sinnvoll ist, find zu verwenden, wenn Sie nur nach * .txt-Dateien suchen. Ack verfügt jedoch über leistungsstarke Funktionen zur Erkennung von Dateitypen, die Sie verwenden können

ack -f --perl

Hier werden alle Perl-Dateien basierend auf dem Dateinamen (* .pm, * .pl, * .t und * .pod) und der Shebang-Zeile gefunden.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.