Wie kann ich mit v2 alle Dateien (einschließlich Binärdateien) im aktuellen Verzeichnis durchsuchen ack
?
Ich möchte das Gleiche tun ack 'foo' **
, aber nur mit einem Flag, also funktioniert es, wenn ich alle Dateien in einem bestimmten Verzeichnis durchsuchen möchte, ohne sie anzuhängen **
.
Unterschied zwischen ack 'foo'
und ack 'foo' **
:
$ mkdir test && cd test
$ printf '\x00\x01foo1\x00' > test1
$ printf 'foo2' > test2
$ ack 'foo'
test2
1:foo2
$ ack 'foo' **
test1
1:foo1
test2
1:foo2
ack
ist immer besser alsgrep
. Ich hab mich geirrt :).Antworten:
Standardmäßig sucht Ack in allen nicht-binären Dateien unterhalb des aktuellen Verzeichnisses nach einem Muster.
Ich glaube, ältere Ack-Versionen würden Binärdateien durchsuchen, wenn Sie ihnen das
--binary
Flag übergeben. Diese Flagge wurde jedoch entfernt. Möglicherweise können Sie stattdessen grep verwenden.quelle
Wenn Sie ack keinen Dateinamen übergeben, wird ein integrierter Standardsatz von Dateien verarbeitet, der nicht erkannte Binärdateien ausschließt. Wenn Sie Dateinamen übergeben, werden alle übergebenen Dateien durchsucht. Dies erklärt den Unterschied zwischen
ack foo
undack foo **
.ack 1
Verwenden Sie in ack 1.x das Flag
-a
, um ack anzuweisen, keine Dateien zu überspringen, deren Typ nicht erkannt wird.Sie können einen Alias erstellen, wenn Sie dieses Flag häufiger als gewünscht verwenden möchten: Fügen Sie die Zeile
alias ack='ack -a'
in Ihr~/.bashrc
oder ein~/.zshrc
. Wenn Sie diesen Alias einrichten undack
ohne die Option aufrufen möchten , rufen Sie auf\ack
(der umgekehrte Schrägstrich deaktiviert die Aliaserweiterung). Skripte sind nicht vom Alias betroffen, sondern nur interaktive Shells.Alternativ können Sie die
-a
Option zu Ihrer hinzufügen~/.ackrc
.Übereinstimmungen in Binärdateien werden als "Übereinstimmungen mit Binärdatei test1" aufgeführt. Es gibt keine Möglichkeit, dieses Verhalten zu deaktivieren, ohne Ack selbst zu ändern (zumindest ein Plugin hinzuzufügen).
ack 2
In ack 2.0 wurde die
-a
Option entfernt. Sie können stattdessen einen Typ definieren, der allen Dateien entspricht, und die-k
Option verwenden, um sicherzustellen, dass alle Dateien dieses Typs mit einbezogen werden. Beachten Sie, dass Dateitypen in einer unvorhersehbaren Reihenfolge verarbeitet werden. Dies führt dazu, dass eine zufällige Menge von Binärtypen wie gewohnt und nicht wie gewohnt verarbeitet wird.Auf diese Weise werden die Übereinstimmungen auch für Dateien gedruckt, die ansonsten binär aussehen würden. Wie oben können Sie diese Optionen zu einem Alias oder zu Ihrem hinzufügen
.ackrc
.quelle