В обычной команде grep
есть опция --exclude
(подробно описана здесь: https://stackoverflow.com/questions/221921/grep-exclude-include-syntax-do-not-grep-through-certain-files), которая позволяет игнорировать определенные файлы при выполнении поиска.
Опция --type
в Ack'е справляется с 95% случаев, когда вы хотите исключить файлы, но она не справляется (насколько я могу судить) с исключением конкретного файла. У меня есть скомпилированный JS файл, который содержит содержимое всех остальных JS файлов (в одной строке), поэтому каждый раз, когда я ищу в grep любой файл, я получаю обратно все содержимое этого огромного скомпилированного файла.
Мне бы не хотелось отказываться от ack и возвращаться к grep из-за этого, но это очень раздражает. Пожалуйста, кто-нибудь скажите мне, что есть способ исключить определенные файлы из поиска ack.
Если вы запустите АСК-создать-ackrc
он будет выводить целую кучу пресетов для общих файлов, таких как сжатый сценарий JavaScript, CSS и каталоги и папки node_modules .ГИТ. Очень полезно!
Здесь'с возможностью сокращен на JS:
# minified Javascript
--ignore-file=match:/[.-]min[.]js$/
--ignore-file=match:/[.]js[.]min$
Если вы хотите сохранить это.запустить ackrc`
ack --create-ackrc >> ~/.ackrc
а потом удалить то, что вы Дон'т нужно из этого файла.
Нет, ack 1.x не позволит вам исключить один файл. В ack 2.0 вы можете. ack 2.0 был в первой альфа-версии и сейчас является текущей рекомендуемой версией ack.
Что касается вашего конкретного случая с минифицированным файлом Javascript, какую версию ack вы используете? ack 1.96 должен игнорировать минифицированный JavaScript на основе расширения. Если проверка расширения не работает, вы можете взломать сам ack, поскольку это одна программа на Perl. Вы можете взломать функцию is_searchable
.
В ack 2.0 мы собираемся игнорировать любую строку, превышающую, скажем, 500 символов, потому что это явно не исходный код.
Вы также можете присоединиться к нам в списке рассылки ack-users. Мы довольно отзывчивы.
Если вы хотите исключить определенные папки, следующие команды могут помочь вам:
АСК ключевые слова --игнорировать-реж имя_папки
человек АСК
в дальнейшем :)
--[никакой]игнорировать-реж=имя_каталога, --[никакой]игнор-КАТАЛОГ=КАТАЛОГ
--игнорировать-файл=ФИЛЬТРТИП:FILTERARGS