Глиф Учебники

Как найти файл по имени в Linux

Справочник · Командная строка Linux · 1 минута чтения

Найти файл notes.txt в домашней папке:

Bash
find ~ -name "notes.txt"

По части имени и без учёта регистра — по всему диску:

Bash
find / -iname "*отчёт*" 2>/dev/null

find перебирает все папки, начиная с указанной, и печатает пути подходящих файлов. Порядок такой: сначала где искать (~ — домашняя папка, / — весь диск, . — текущая папка), потом условия.

Полезные условия

УсловиеЧто ищет
-name "notes.txt"точное имя, с учётом регистра
-iname "notes*"имя без учёта регистра, * — любые символы
-type fтолько файлы
-type dтолько папки
-size +100Mбольше 100 МБ
-mtime -7изменённые за последние 7 суток
-maxdepth 2не глубже двух уровней вложенности

Условия складываются: find /var/www -type f -name "*.php" -mtime -1 — PHP-файлы сайта, изменённые за сутки.

Подводные камни

Быстрый поиск по базе

Если искать нужно часто, в Ubuntu и Debian есть пакет plocate: команда plocate notes ищет мгновенно, потому что смотрит не на диск, а в заранее собранный список имён. Список обновляется по расписанию раз в сутки, поэтому только что созданных файлов в нём ещё нет — обновить вручную можно командой sudo updatedb.

Найти программу

Где лежит команда, которая запускается по имени, показывает не find, а which или type:

Bash
which python3
type -a python3