Jak wyszukiwać wszystkie pliki (w tym binarne) w bieżącym katalogu za pomocą ack
v2?
Chcę zrobić to samo co robienie ack 'foo' **
, ale tylko z flagą, więc działa, jeśli chcę przeszukać wszystkie pliki w określonym katalogu bez dołączania **
.
Różnica między ack 'foo'
i 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
zawsze jest to lepsze niżgrep
. Myliłem się :).Odpowiedzi:
Domyślnie Ack szuka wzorca we wszystkich plikach niebinarnych poniżej bieżącego katalogu.
Wierzę, że starsze wersje Ack przeszukiwałyby pliki binarne po przekazaniu im
--binary
flagi. Ta flaga została jednak usunięta. Zamiast tego możesz użyć grep.źródło
Gdy nie przekazujesz nazwy pliku do potwierdzenia, działa on na wbudowanym domyślnym zestawie plików, który wyklucza nierozpoznane pliki binarne. Jeśli podasz nazwy plików, przeszuka wszystkie przekazane pliki. To wyjaśnia różnicę między
ack foo
iack foo **
.ack 1
W ack 1.x użyj flagi,
-a
aby powiedzieć ack, aby nie pomijał plików, których typu nie rozpoznaje.Możesz utworzyć alias, jeśli chcesz tę flagę częściej niż nie: dodaj linię
alias ack='ack -a'
w swoim~/.bashrc
lub~/.zshrc
. Jeśli skonfigurujesz ten alias i chcesz dzwonićack
bez opcji, zadzwoń\ack
(odwrotny ukośnik wyłącza rozwijanie aliasu). Alias nie ma wpływu na skrypty, tylko interaktywne powłoki.Możesz też dodać
-a
opcję do swojego~/.ackrc
.Dopasowania w plikach binarnych zostaną wyświetlone jako „Dopasowania pliku binarnego test1 dopasowania”. Nie ma sposobu, aby wyłączyć to zachowanie bez modyfikacji samego Ack (przynajmniej dodania wtyczki).
ack 2
W wersji 2.0
-a
opcja została usunięta. Zamiast tego możesz zdefiniować typ pasujący do wszystkich plików i użyć-k
opcji, aby potwierdzenie obejmowało wszystkie pliki tego typu. Zauważ, że typy plików są przetwarzane w nieprzewidywalnej kolejności, ponieważ spowoduje to, że losowy zestaw typów binarnych będzie przetwarzany jako zwykły zamiast zwykłego typu.W ten sposób dopasowania są drukowane nawet dla plików, które inaczej wyglądałyby na binarne. Jak wyżej, możesz dodać te opcje do aliasu lub do swojego
.ackrc
.źródło