Кто использует линукс (не важно какой именно дистрибутив) в работе или на домашнем ПК, могут эффективно автоматизировать рутинные задачи. Например, в этой статье я расскажу как можна быстро найти какую-то строку в куче файлов.
Как найти строку в файлах на линукс?
В этом нам поможет утилита командной строки под названием grep
. Она ищет строки, которые отвечают регулярному выражению и выводит их на консоль.
Обратите внимание на следующее
- Используйте скобки, если строка содержит пробелы «текст команды«.
- Помните про пробелы между расширениями {js,java}
- Не используйте фигурные скобки для одного расширения
{java}-> java
Ниже представлены наиболее полезные команды, которые я использую в повседневной работе, а также другие работающие команды, найденные на просторах Интернета:
Простой поиск строки в файле
Структура команды: grep строка названиеФайла
Пример использования: grep name file.txt
Поиск строки в файле игнорируя чувствительность к регистру
Структура команды: grep строка названиеФайла
Пример использования: grep -i name file.txt
Найти строку в текущей директории
Структура команды: grep строка .
Пример использования: grep name .
Найти строку рекурсивно
Структура команды: grep -r строка .
Пример использования: grep -r name .
Найти файлы, которые не содержать определенную строку
Структура команды: grep -L строка *
Пример использования: grep -L "foo" *
Рекурсивно найти строку только в определенных файлах
Структура команды:
grep строка -r . —include=*.расширениеФайла
grep строка -r . —include=*.{расширениеФайла, расширениеФайла2}
Пример использования: grep "name=Main" -r . --include=*.java
Обратите внимание! Эти команды буду искать только в тех файлах, которые вы определили в секции —include=*.{…}
Рекурсивно найти строку кроме определенных расширений
Структура команды: grep строка -r . —exclude=*.{расширениеФайла}
Пример использования: grep "Serializable" -r . --exclude=*.{jar,js,index}
Рекурсивно найти строку в определенных расширениях, исключая указанные
Структура команды:
grep строка -r . —include=*.расширениеФайла —exclude=*.расширениеФайла2
grep строка -r . —include=*.{расширениеФайла,расширениеФайла2} —exclude=*.{расширениеФайла3,расширениеФайла2}
Пример использования: grep "name=Main" -r . --include=*.{java,html} --exclude=*.java
Обратите внимание! Команда выше не будет искать в файлах с расширением .java
Ищите другие полезности в специальном разделе.