Как искать файлы в Linux с помощью команд find и locate

При работе с Linux одной из распространенных проблем является поиск определенных файлов. В этом руководстве мы рассмотрим, как использовать команды find команду . для поиска файлов на основе различных фильтров и параметров. Мы также кратко рассмотрим locate команда, которая предоставляет альтернативный способ поиска файлов.

Предварительные условия

Для того чтобы приступить к изучению этого руководства, вам необходимо иметь компьютер, работающий под управлением операционной системы на базе Linux. Это может быть как локальная машина, так и виртуальный частный сервер, доступный через SSH. Хотя демонстрации в этом руководстве были проверены на Ubuntu 20.04, они должны работать на любом дистрибутиве Linux.

Поиск по имени файла

Наиболее часто используемый метод поиска файлов — по их имени. Чтобы найти файл по имени, используйте find , вы можете использовать следующий синтаксис:

$ find / -name "query"

По умолчанию этот поиск чувствителен к регистру. Если вы хотите выполнить поиск без учета регистра, можно воспользоваться командой -iname опцию:

$ find / -iname "query"

Если вы хотите найти все файлы, которые не соответствуют определенному шаблону, вы можете использовать опцию -not опцию:

$ find / -not -name "query_to_avoid"

В качестве альтернативы можно использовать восклицательный знак (!), чтобы инвертировать поиск:

$ find / \! -name "query_to_avoid"

При использовании восклицательного знака не забывайте экранировать его с помощью обратного слеша (\), чтобы оболочка не смогла его интерпретировать.

Поиск по типу файла

Другой способ поиска файлов — по их типу с помощью функции -type параметр. Вот некоторые дескрипторы типов, которые вы можете использовать:

  • f: обычный файл
  • d: каталог
  • l: символическая ссылка
  • c: символьные устройства
  • b: блочные устройства

Например, если вы хотите найти все символьные устройства в вашей системе, выполните следующую команду:

$ find /dev -type c

Для поиска файлов с определенным расширением (например, .conf), воспользуйтесь командой -name вместе с опцией *.extension шаблон:

$ find /usr -type f -name "*.conf"

Вы можете комбинировать несколько поисковых выражений с помощью -and оператор (подразумевается, если не указана опция) или оператор -or оператор:

$ find -name query_1 -or -name query_2

Фильтрация по размеру и времени

The find Команда предлагает различные опции для фильтрации файлов по их размеру и времени.

Размер

Чтобы отфильтровать файлы по размеру, воспользуйтесь параметром -size параметр, за которым следует значение размера и суффикс, указывающий на единицу измерения. Обычные суффиксы размера включают:

  • c: байт
  • k: килобайты
  • M: мегабайт
  • G: гигабайты
  • b: 512-байтные блоки

Например, чтобы найти файлы, размер которых составляет ровно 50 байт:

$ find /usr -size 50c

Чтобы найти файлы, размер которых меньше 50 байт:

$ find /usr -size -50c

Время

Чтобы отфильтровать файлы по времени их модификации, можно воспользоваться командой -mtime, -atime, и -ctime параметры.

  • -mtime поиск на основе времени модификации файла.
  • -atime поиск на основе времени доступа к файлу.
  • -ctime поиск на основе времени изменения файла.

Время можно указать в разных форматах:

  • n: точное количество 24-часовых периодов назад.
  • +n: более n 24-часовых периодов назад.
  • -n: менее n 24-часовых периодов назад.

Например, чтобы найти файлы, измененные в течение последних 7 дней:

$ find /usr -mtime -7

Чтобы найти файлы, доступ к которым был получен более 30 дней назад:

$ find /usr -atime +30

Чтобы найти файлы, метаданные которых (например, разрешения) изменились за последние 24 часа:

$ find /usr -ctime 0

Поиск по владельцу и разрешениям

The find Команда также позволяет искать файлы на основе их владельца и разрешений.

Владелец

Чтобы найти файлы, принадлежащие определенному пользователю, вы можете использовать функцию -user , за которым следует имя пользователя. Например, для поиска файлов, принадлежащих пользователю «john»:

$ find / -user john

Разрешения

Вы можете искать файлы на основе их разрешений с помощью функции -perm параметр. Этот параметр принимает числовой режим или символические обозначения, представляющие желаемые разрешения.

Для поиска файлов с определенными разрешениями, выраженными в числовом режиме, используйте трехзначное восьмеричное число. Например, для поиска файлов с правами чтения, записи и выполнения для владельца и правами чтения для остальных:

$ find / -perm 744

Для поиска файлов с определенными разрешениями, выраженными в символьной нотации, используйте комбинацию u (пользователь), g (группа), o (другие), r (читать), w (запись) и x (выполнить). Например, для поиска файлов с правами на чтение и запись для владельца:

$ find / -perm u=rw

Можно также комбинировать несколько разрешений и указывать различные уровни владения в символической нотации. Например, для поиска файлов с разрешениями на чтение и выполнение для владельца, на запись для группы и на чтение для остальных:

$ find / -perm u=rx,g=w,o=r

Используя символ -user и -perm опции, вы можете эффективно искать файлы на основе их владельца и разрешений.

Выполнение команд на find Результаты

The find Команда не только помогает находить файлы, но и позволяет выполнять действия с результатами поиска. Вы можете выполнять различные команды над файлами, найденными с помощью find с помощью -exec вариант.

Основной синтаксис для выполнения команд на find результатах, выглядит следующим образом:

$ find /path/to/search -name "query" -exec command {} \;

В этом синтаксисе:

  • /path/to/search это каталог, в котором вы хотите искать файлы.
  • "query" это поисковый запрос или шаблон для сопоставления имен файлов.
  • command это команда, которую нужно выполнить для каждого найденного файла.
  • {} представляет собой заполнитель для найденного файла.
  • \; используется для завершения -exec опции.

Например, чтобы удалить все файлы с параметром .log в /var/log вы можете использовать следующую команду:

$ find /var/log -name "*.log" -exec rm {} \;

Эта команда выполнит файл rm для каждого файла, найденного командой find, удаляя все файлы с .log расширением.

Можно также комбинировать несколько команд или передавать команде дополнительные аргументы. Только убедитесь, что все специальные символы правильно экранированы.

Использование -exec с опцией find обеспечивает гибкость в выполнении действий над результатами поиска, что делает его мощным инструментом для управления файлами и автоматизации.

Использование locate Команда

The locate Команда обеспечивает более быстрый поиск файлов в системе за счет использования предварительно созданной базы данных, называемой базой данных locate. База данных регулярно обновляется, поэтому в ней могут отсутствовать недавно созданные или измененные файлы.

Инициализация базы данных:

Перед использованием locate , необходимо убедиться, что база данных обновлена. Выполните следующую команду от имени root или с правами sudo:

$ sudo updatedb

Эта команда обновляет базу данных, используемую locate для индексации файловой системы.

Поиск файлов:

Чтобы найти файлы с помощью locate, просто укажите ключевое слово или шаблон для поиска. Например:

$ locate file.txt

Эта команда найдет все файлы с именем «file.txt».

Чувствительность к регистру:

По умолчанию locate команда не зависит от регистра. Если вы хотите выполнить поиск с учетом регистра, используйте команду -i опцию. Например:

$ locate -i File.txt

Эта команда найдет файлы с именем «File.txt» или «file.txt».

Обновление базы данных:

База данных файлов, используемая locate может быть не всегда актуальной. Чтобы убедиться, что вы имеете самую свежую информацию о файлах, периодически обновляйте базу данных с помощью команды updatedb команду.

Заключение

Поиск файлов в Linux может быть выполнен с помощью функции find и locate команды. Команда find обеспечивает большую гибкость и позволяет выполнять тонкий поиск по различным критериям, таким как имя файла, тип, размер и время. С другой стороны, команда locate обеспечивает более быстрый поиск по заранее созданной базе данных.

Освоив эти команды, вы сможете эффективно находить файлы в системе Linux и оптимизировать свой рабочий процесс.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *