Gymterview
junior

Какие команды для поиска файлов и текста существуют в Linux?

Поиск файлов и текста — одна из самых частых операций при работе на сервере.

find — поиск файлов по критериям

Пример
# По имени
find /var/log -name "*.log"
find / -iname "readme*"               # Без учёта регистра

# По типу
find /etc -type f                      # Только файлы
find /opt -type d                      # Только каталоги

# По размеру
find /var/log -size +100M              # Больше 100 МБ
find /tmp -size +1G                    # Больше 1 ГБ

# По времени модификации
find /var/log -mtime -1                # Изменённые за последние сутки
find /tmp -mtime +30                   # Старше 30 дней

# Действия с найденными файлами
find /tmp -name "*.tmp" -delete
find /opt -name "*.sh" -exec chmod +x {} \;

grep — поиск текста в файлах

Пример
# Поиск строки в файле
grep "ERROR" /var/log/syslog

# Рекурсивный поиск
grep -r "datasource.url" /opt/myapp/

# Без учёта регистра
grep -i "exception" application.log

# С номерами строк и контекстом
grep -n "ERROR" application.log
grep -C 3 "OutOfMemoryError" application.log

# Инвертированный поиск
grep -v "DEBUG" application.log

# Только имена файлов с совпадениями
grep -rl "password" /etc/

which / whereis / locate

Пример
which java                 # Путь к исполняемому файлу
whereis java               # Исполняемый файл, исходники, man-страница

# Быстрый поиск по индексной базе
sudo apt install plocate
sudo updatedb
locate application.jar

Комбинирование команд

Пример
# Найти Java-файлы с аннотацией
find /opt/project -name "*.java" | xargs grep "@Transactional"

# Найти самые большие файлы
find / -type f -size +100M 2>/dev/null | head -20

# Подсчитать строки кода
find . -name "*.java" | xargs wc -l

На собеседовании: ключевые команды — find и grep. Интервьюер может попросить найти все файлы больше 100 МБ или все строки с ошибкой в логах. Частая ошибка — не знать флаг -r у grep для рекурсивного поиска или забывать 2>/dev/null для подавления ошибок доступа в find.