Как я могу найти все файлы (включая двоичные) в текущем каталоге с ack
v2?
Я хочу сделать то же самое, что и делать ack 'foo' **
, но только с флагом, поэтому он работает, если я хочу искать все файлы в определенном каталоге без добавления **
.
Разница между ack 'foo'
и 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
всегда лучше, чемgrep
. Я ошибался :).Ответы:
По умолчанию Ack ищет шаблон во всех недвоичных файлах ниже текущего каталога.
Я считаю, что старые версии Ack будут искать в двоичных файлах, когда вы передаете им
--binary
флаг. Этот флаг был удален, хотя. Вы можете использовать вместо этого grep.источник
Когда вы не передаете имя файла в ack, он работает со встроенным набором файлов по умолчанию, который исключает нераспознанные двоичные файлы. Если вы передаете имена файлов, он ищет все файлы, которые вы передаете. Это объясняет разницу между
ack foo
иack foo **
.кв 1
В ack 1.x используйте флаг,
-a
чтобы ack не пропускал файлы, тип которых он не распознает.Вы можете сделать псевдоним, если вы хотите, чтобы этот флаг чаще, чем нет: добавьте строку
alias ack='ack -a'
в ваш~/.bashrc
или~/.zshrc
. Если вы установили этот псевдоним и хотите позвонитьack
без опции, вызовите\ack
(обратная косая черта отключает расширение псевдонима). На псевдонимы скрипты не влияют, только интерактивные оболочки.Кроме того, вы можете добавить
-a
опцию к вашему~/.ackrc
.Совпадения в двоичных файлах будут перечислены как «совпадения двоичного файла test1». Нет способа отключить это поведение без изменения самого Ack (по крайней мере, добавления плагина).
кв 2
В ack 2.0
-a
опция была удалена. Вместо этого вы можете определить тип, соответствующий всем файлам, и использовать-k
опцию, чтобы ack включал все файлы этого типа. Обратите внимание, что типы файлов обрабатываются в непредсказуемом порядке, поэтому случайный набор двоичных типов будет обрабатываться как обычный, а не как обычный тип.Таким образом, совпадения печатаются даже для файлов, которые в противном случае выглядели бы двоичными. Как и выше, вы можете добавить эти параметры к псевдониму или вашему
.ackrc
.источник