Я уверен, что неправильно понимаю что-то о файле/каталоге ack, игнорируют значения по умолчанию, но возможно кто-то мог пролить некоторый свет на это для меня:
mbuck$ grep logout -R app/views/
Binary file app/views/shared/._header.html.erb.bak.swp matches
Binary file app/views/shared/._header.html.erb.swp matches
app/views/shared/_header.html.erb.bak: <%= link_to logout_text, logout_path, { :title => logout_text, :class => 'login-menuitem' } %>
mbuck$ ack logout app/views/
mbuck$
Принимая во внимание, что...
mbuck$ ack -u logout app/views/
Binary file app/views/shared/._header.html.erb.bak.swp matches
Binary file app/views/shared/._header.html.erb.swp matches
app/views/shared/_header.html.erb.bak
98:<%= link_to logout_text, logout_path, { :title => logout_text, :class => 'login-menuitem' } %>
Просто вызов ack
без опций не может найти результат в a .bak
файл, но звонящий с --unrestricted
опция может найти результат. Насколько я могу сказать, тем не менее, ack, не игнорирует .bak
файлы по умолчанию.
ОБНОВЛЕНИЕ
Благодаря полезным комментариям ниже, вот новое содержание моего ~/.ackrc
:
--type-add=ruby=.haml,.rake --type-add=css=.less
ack
отличается тем, что у него нет черного списка типов файлов, которые нужно игнорировать, а скорее белого списка типов файлов, в которых он будет искать.
Цитата из справочной страницы:
Без выбора файлов
ack-grep
ищет файлы только тех типов, которые он распознает. Если у вас есть файл с именемfoo.wango
, аack-grep
не знает, что такое файл .wango,ack-grep
не будет искать Это.
(Обратите внимание, что я использую Ubuntu, где двоичный файл называется ack-grep
из-за конфликта имен)
ack --help-types
покажет список типов, которые вы опоры для установки ack.
ack --man
states:
Если вы хотите, чтобы ack искал каждый файл, даже те, которые он всегда игнорирует, например coredumps и файлы резервных копий, используйте "-u".
и
Почему ack по умолчанию игнорирует неизвестные файлы? по умолчанию? ack разработан программистом, для программистов, для поиска в больших деревьях кода. Большинство кодовых баз содержат много файлов которые не являются исходными файлами (например скомпилированные объектные файлы, контроль исходных текстов метаданные и т.д.), и grep тратит много времени на поиск по всем этим и возвращает совпадения из этих файлов.
Вот почему поведение ack, заключающееся в том. искать то, что он не распознает является одним из его величайших достоинств: скорость, которую вы получаете от поиска только то, что вы хотите искать.
EDIT: Также, если вы посмотрите на исходный код, bak
файлы игнорируются.
Если вы запутались в том, какие файлы будет искать ack, просто добавьте опцию -f. Будет выведен список всех файлов, которые он считает доступными для поиска.