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.