Могу ли я создать тип файла ack на основе имени файла, а не расширения?

Я хотел бы включить файлы с определенным именем - не расширение - в мой поиск ack. Возможно ли это с помощью ack?

Если я использую параметр -G, это исключает все другие типы файлов. (Поэтому я не могу поместить его в мой файл .ackrc.)

Я попытался использовать --type-set mytype=filename.txt, но это работает только для расширений, так что это будет поиск файлов, включая шаблон .filename.txt, поэтому не найти filename.txt. (Это также показывает ack --help types: --mytype .filename.txt, а не --mytype filename.txt.)

Кто-нибудь какие-нибудь идеи?

Ответ 1

man ack говорит, что файлы, подлежащие поиску, могут быть предоставлены через стандартный ввод.
Поэтому это должно работать:

find . -name filename.txt | ack PATTERN -

К сожалению, это не так. Он дает ack: Ignoring 1 argument on the command-line while acting as a filter., который, по-видимому, является ошибкой в ​​файле. Когда эта ошибка будет исправлена ​​, мы сможем использовать

find . -name filename.txt | ack --nofilter PATTERN -

Ответ 2

Вы также делаете это, как если бы вы использовали zsh:

ack 'Pattern' **/filename.txt

Ответ 3

То, что вы спрашиваете, - "могу ли я сделать тип файла, который ack распознает на основе имени файла", и ответ "Нет, не в ack 1.x, но вы можете в ack 2.0". ack 2.0 находится в альфа-релизе, и мы надеемся, что к Рождеству будет бета.

Как указывал @Christian выше, вы можете указать данное имя файла в командной строке, но это полностью исключает проверку типов файлов.

Ответ 4

Я знаю, что это поздний ответ, но можете ли вы просто указать имя файла при запуске ack?

ack 'My Text' filename.txt