Могу ли я создать тип файла подтверждения на основе имени файла, а не расширения? - PullRequest
10 голосов
/ 07 апреля 2011

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

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

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

У кого-то есть идеи?

Ответы [ 4 ]

11 голосов
/ 05 июля 2011

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

find . -name filename.txt | ack PATTERN -

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

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

6 голосов
/ 10 декабря 2012

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

ack 'Pattern' **/filename.txt

3 голосов
/ 10 декабря 2012

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

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

1 голос
/ 05 июля 2011

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

ack 'My Text' filename.txt
...