Могу ли я создать тип файла 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