Я хотів би отримати всі файли, крім деяких типів файлів?


36

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

Наприклад, я шукаю рядок у своїй папці робочої області, але він закінчує пошук всередині файлів sql та генерує серіалізовані рядки.

Тож у цьому випадку я хотів би grepпапку робочої області, крім файлів sql.

Я бажаю, якщо це можливо, шукаю одноводковий.


5
Майте на увазі, що Linux і Unix та unix-a-like не дійсно мають "типи файлів" так, як вам здається, ви хочете. Лише за умовами, що назви файлів мають суфікс ".c" або ".txt" або ".sql" - ці суфікси навіть не є "розширеннями" у стилі Windows, а тим більше індикаторами того, що SQL або текст або вихідний код C живуть всередині файлів.
Брюс Едігер

Відповіді:



8

Це зробить це для вас і виключить .sql та .txt файли:

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

Однак це здається, що ack був би набагато кращим інструментом для того, що ви намагаєтеся зробити:

ack -a --nosql 'foobar' /some/dir

Вибачте, я не побачив "ек" частини і помістив її у своїй відповіді, яку тепер видалено.
Шанс

Ще один користувач зазначає, що ack - a --nobinaryвключає бінарні файли
Michael Mrozek

Зворотна косою рисою в шаблоні імені файлу не потрібна.
Кусалаланда
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.