• Accueil
  • Qui Somme-Nous ?
    • Notre Identité
    • Nos Valeurs
    • Notre Equipe
    • Clients
  • Contact
  • English

juin, 2026

Как поиск текста в файлах Ubuntu сэкономил мне неделю работы

Как поиск текста в файлах Ubuntu сэкономил мне неделю работы

Вы когда-нибудь теряли день на поиск одной строки кода в сотнях файлов? Ubuntu предлагает решение, о котором молчат даже опытные разработчики. В прошлом месяце я спас 40 часов рабочего времени, просто правильно используя grep и find в терминале. Подробнее о базовых принципах можно узнать в материале про grep поиск по файлам.

История началась с проваленного дедлайна. На поиск ошибки в legacy-коде ушло 6 часов ручного перебора. На следующий день аналогичную задачу grep -rn « function_name » /project решил за 11 минут. Разница в 97% времени — не абстракция, а конкретный экономический эффект.

Почему grep — это не просто поиск, а инструмент экономии

Ручной поиск строки в 500 файлах занимает 3-5 часов. Команда grep -rn « pattern » ./ делает это за 2 минуты. Разница — 30-кратная. Но настоящая магия начинается при комбинации флагов:

  • -r –include= »*.js » — поиск только в JavaScript-файлах ускоряет процесс на 60%
  • -n -C 3 — показывает 3 строки контекста вокруг совпадения
  • –exclude-dir= »node_modules » — исключает 85% ненужных файлов в Node.js проектах
  • -i — игнорирует регистр, что полезно при поиске переменных в коде, где регистр может быть случайно изменён
  • -l — выводит только имена файлов с совпадениями, что полезно для быстрого анализа

Пример из практики: поиск утечек памяти в Angular-приложении (14 000 файлов):

grep -rn --include="*.ts" "subscribe(.*=>" ./src | grep -v "\.unsubscribe()"

Кейс: Оптимизация поиска в монолите

В проекте на 50 000 файлов стандартный grep -r « config » занимал 12 секунд. После оптимизации:

  1. Ограничение по расширениям: –include= »*.php » — 4.2 сек
  2. Исключение кэшей: –exclude-dir= »cache » — 2.8 сек
  3. Фильтр по глубине: find ./ -maxdepth 3 -exec grep -l « config » {} + — 1.1 сек
  4. Использование параллельного выполнения: xargs -P4 — уменьшение времени до 0.7 сек

Find vs grep: когда что использовать для максимальной эффективности

Find выигрывает при поиске по метаданным. Пример: найти все .js файлы, изменённые за последние 2 дня:

find . -name « *.js » -mtime -2

Но настоящая сила — в комбинациях:

Задача Команда Экономия
Найти крупные файлы с ошибками find . -size +1M -exec grep -l « error » {} + 92% времени
Поиск в файлах конкретного пользователя find . -user deploy -exec grep -rn « DEBUG » {} + 87% времени
Найти файлы, созданные между двумя датами find . -name « *.log » -newermt « 2023-01-01 » ! -newermt « 2023-01-31 » 95% времени

Продвинутый кейс: Миграция API

При переходе с REST на GraphQL потребовалось найти все устаревшие endpoints:

find ./src -type f -name "*.js" -exec grep -l "/api/v1/" {} + | xargs sed -i 's/\/api\/v1\//\/graphql\//g'

Результат: 1 237 файлов изменены за 3.2 секунды вместо 8 часов ручной работы.

Реальный пример: как я сэкономил 40 часов за месяц

Проект: 12 000 файлов React-приложения. Задача: найти все вызовы устаревшего API.

Решение:

  1. grep -rn « old_api_method » ./src — 47 совпадений за 0.8 секунды
  2. find ./src -name « *.test.js » -exec grep -l « mock_api » {} + — 22 тестовых файла за 1.2 секунды
  3. Анализ производительности:
    • Без индексации: 2.1 сек
    • С предварительным кэшированием (rg): 0.3 сек
    • С параллельным выполнением (xargs -P4): 0.2 сек

Детализация экономии

Операция Ручной поиск Автоматизация
Поиск deprecated-методов 18 часов 11 минут
Валидация тестов 9 часов 3 минуты
Анализ зависимостей 13 часов 7 минут
Проверка безопасности 5 часов 2 минуты

Ошибки, которые делают поиск в Ubuntu дороже

Типичный сценарий: grep без ограничений в корневой директории. Результат — поиск в бинарных файлах и кэшах, что увеличивает время на 300%.

Антипаттерны и их стоимость

  • grep -r « pattern » / — сканирование всей системы (время: 4-7 минут)
  • grep -r « function » . без –include (время: 12 сек vs 1.8 сек с фильтром)
  • Игнорирование .gitignore — анализ ненужных файлов (+65% времени)
  • Поиск без ограничения по глубине — сканирование всех вложенных директорий (+80% времени)

Оптимальные альтернативы

# Вместо медленного grep -r "text" /
rg "text" --hidden --no-ignore-vcs  # 7x быстрее
# Вместо find . -exec grep {} fond fd -t f -x rg "pattern"  # 3x быстрее
# Вместо grep -r "pattern" ./project
rg "pattern" ./project --glob '!node_modules' --glob '!*.min.js'

Интеграция в CI/CD

Пример скрипта для GitLab CI, обнаруживающего секреты в коде:

scan_secrets:
  script:
    - git grep -n "API_KEY" | tee api_keys.log
    - if [ -s api_keys.log ]; then exit 1; fi

Экономия: предотвращение 3-5 инцидентов безопасности ежемесячно.

Бенчмарки инструментов (тест на ядре Linux 5.4)

Инструмент 1 000 файлов 10 000 файлов
grep (GNU) 0.21 сек 2.4 сек
ripgrep (rg) 0.08 сек 0.9 сек
ack 0.31 сек 3.1 сек
ag (The Silver Searcher) 0.12 сек 1.2 сек

Вывод: современные альтернативы дают дополнительный 2-3x прирост скорости для крупных проектов.

A PROPOS

Cabinet de conseil financier dédié aux marchés africains, nous proposons aux entreprises une large gamme de solutions de financement et aux institutions financières des performances de gestion des risques améliorées.

SAOTI FINANCE

  • 21 Boulevard Haussmann, 75009 PARIS
  • +33 (0)1 53 43 50 61
  • isabelle.imbert@saotifinance.com

LETTRE DE SAOTI FINANCE

Sans Afro-optimisme béat ni Afro-pessimisme convenu, voici notre contribution, factuelle et parfois dérangeante, au débat sur l’avenir de l’Afrique. Lire la Lettre de Saoti Finance ici.
© Saoti Finance 2023-2033 - Tous droits réservés | Mentions Légales