← Все вопросы

Как найти файл по имени в Linux через команду find?

Задан 17 месяцев назад1.2к просмотров2 ответа
9

Где-то в проекте лежит файл config.json, но я не помню, в какой папке. Как найти файл по имени через терминал во всех подпапках сразу? Команда find выдаёт что-то непонятное.

2 ответа

10
✓ Принятый ответ — помог автору

Для поиска файлов по имени есть команда find. Её формат: find ГДЕ-искать УСЛОВИЕ.

Найти файл по точному имени во всех подпапках текущей директории:

find . -name config.json

Точка . означает «искать здесь и во всех вложенных папках».

Поиск по шаблону (звёздочка = любые символы) — имя бери в кавычки:

find . -name "*.json"

найдёт все файлы с расширением .json.

Если регистр букв не важен, используй -iname (i = ignore case):

find . -iname "config*"

Найти только папки с таким именем:

find . -type d -name node_modules

(-type d = directories, -type f = только файлы).

Искать по всей системе можно от корня /, но это медленно и завалит экран ошибками «Permission denied».

Частая ошибка: забыть кавычки вокруг шаблона со звёздочкой. Без кавычек find . -name *.json — звёздочку сначала раскроет сам bash (подставит имена из текущей папки), и find отработает не так, как ты ждёшь. Шаблоны с * всегда заключай в кавычки: "*.json".

4

Если нужно искать по содержимому (текст внутри файлов), а не по имени — это уже не find, а grep. Не путай:

  • find — ищет файлы (по имени, размеру, дате).
  • grep — ищет текст внутри файлов.

Ещё быстрый вариант для имён файлов — locate config.json (если установлен). Он ищет по индексу и работает мгновенно, но может не видеть только что созданные файлы (индекс обновляется не сразу).

Ваш ответ

Войдите, чтобы ответить на вопрос.