Я хотел бы grep все файлы, кроме некоторых типов файлов?

Как я рекурсивно grep файлы в определенных папках, кроме нескольких типов файлов?

Например, я ищу строку в моей папке рабочего пространства, но она заканчивает поиск внутри файлов sql и генерирует сериализованные строки.

Итак, в этом случае я хотел бы grep папку рабочего пространства, кроме файлов sql.

Я предпочитаю, если возможно, один лайнер.

26 голосов | спросил chrisjlee 9 FebruaryEurope/MoscowbThu, 09 Feb 2012 03:07:29 +0400000000amThu, 09 Feb 2012 03:07:29 +040012 2012, 03:07:29

2 ответа


34

Если у вас есть GNU grep, вы можете использовать --exclude=GLOB, например

grep -r --exclude='*.sql' pattern dir/
ответил jw013 9 FebruaryEurope/MoscowbThu, 09 Feb 2012 03:57:41 +0400000000amThu, 09 Feb 2012 03:57:41 +040012 2012, 03:57:41
7

Это сделает это для вас и исключит файлы .sql и .txt:

find /some/dir -type f ! -name '*\.sql' ! -name '*.txt' -print0 | xargs -0 grep 'foobar'

Однако, похоже, ack будет намного лучшим инструментом для того, что вы пытаетесь сделать:

ack -a --nosql 'foobar' /some/dir
ответил Mark McKinstry 9 FebruaryEurope/MoscowbThu, 09 Feb 2012 03:17:07 +0400000000amThu, 09 Feb 2012 03:17:07 +040012 2012, 03:17:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132