Как использовать команду Find для поиска файлов в Linux
Бывают случаи, когда вы хотите получить доступ к определенному файлу, но не можете найти его в своей системе из-за отсутствия организации папок. К счастью, Linux предоставляет вам несколько удобных утилит, которые позволяют легко искать файлы на вашем компьютере.
Команда find – один из таких инструментов, который можно использовать для поиска файла по его имени, разрешениям, расширению, размеру и т. Д. Это руководство объяснит команду Linux Find и предоставит несколько примеров, демонстрирующих, насколько мощна эта утилита.
Что такое команда поиска?
Как следует из названия, команда find позволяет пользователю искать файлы, находящиеся в их локальном хранилище. В отличие от обычных функций поиска, представленных в файловых менеджерах Linux, команда find имеет дополнительные функции, которые могут фильтровать файлы в соответствии с определенными условиями.
Кроме того, команда find предоставляет несколько критериев для поиска файлов на компьютере. Вы даже можете использовать регулярные выражения для сопоставления имени файла с определенным шаблоном.
Как найти файлы в Linux
Команда find имеет множество опций и функций, которые фильтруют файлы в соответствии с указанными условиями.
Найти синтаксис команды
Базовый синтаксис команды find:
find [path] [options] [expression]
Например, следующая команда будет искать текстовые файлы в каталоге / home .
find /home -type f -name "*.txt"
Имейте в виду, что перед поиском файлов в вашем хранилище вам необходимо иметь права на чтение для этого конкретного каталога.
Искать файлы по имени
Чаще всего команда find используется для поиска файла по его имени. Чтобы найти файл по имени файла, используйте флаг -name с командой по умолчанию.
find /home -type f -name filename.txt
Вышеупомянутая команда будет искать файл с именем filename.txt в каталоге / home . Параметр -type f сообщает системе, что мы ищем файл .
Если вы хотите игнорировать регистр символов в имени файла, замените параметр -name на -iname .
find /home -type f -iname FileName
Эта команда найдет файл, который имеет одно из следующих имен: имя файла, имя файла, имя файла, имя файла и т. Д.
Как и любую другую команду Linux, вы можете использовать . (точка), чтобы указать относительный путь к текущему каталогу.
find . -type f -name filename.txt
Точно так же можно использовать / для / root и ~ для / home .
Найти файлы по расширению
Поиск файлов с определенным расширением может помочь сузить результаты поиска. Чтобы найти файл по его расширению, используйте следующее регулярное выражение с флагами -name и -iname .
find /home -type f -name "*.pdf"
Эта команда отобразит список всех файлов с расширением .pdf . Обратите внимание, что вам нужно будет экранировать символ звездочки ( * ) кавычками ( "" ) или обратной косой чертой ( ), чтобы терминал интерпретировал его как подстановочный знак.
Вы также можете инвертировать указанную выше команду, используя флаг -not . Следующая команда будет искать файлы без расширения .pdf .
find /home -type f -not -name "*.pdf"
Вы даже можете передать команду find по конвейеру с другими командами Linux. Например, чтобы изменить права модерации для каждого файла, который соответствует условию:
find /home - type f "*.pdf" -exec chmod -777 {} ;
Эта команда выполнит поиск всех файлов PDF в каталоге / home и изменит их права доступа, чтобы любой мог читать, писать и выполнять эти файлы.
Поиск определенных типов файлов
Помимо файлов, команда find может искать и другие типы файлов. Каталоги, символические ссылки, сокеты и символьные устройства – вот некоторые из типов файлов, которые поддерживает find.
До сих пор мы использовали параметр -type f в команде find. Буква f означает файл . Для поиска файлов других типов в Linux замените f другими зарезервированными символами.
- f : обычные файлы
- d : каталоги
- l : символические ссылки
- c : символьные устройства
- b : блочные устройства
- p : именованный канал
- s : сокеты
Чтобы найти подкаталоги в каталоге / home :
find /home -type d
Найти файлы по размеру
Флаг -size позволяет вам искать файлы, которые занимают определенное место на диске. Следующие суффиксы обозначают различные размеры файлов:
- b : блоки по 512 байт
- c : байты
- w : двухбайтовые слова
- k : килобайты
- M : мегабайты
- G : гигабайты
Чтобы найти все файлы размером 1 ГБ:
find /home -type f -size 1G
Для поиска файлов размером менее 1 ГБ добавьте символ минус ( – ) перед указанием размера:
find /home -type f -size -1G
Точно так же используйте оператор плюс ( + ), чтобы найти файлы размером более 1 ГБ:
find /home -type f -size +1G
Для поиска файлов в диапазоне размеров:
find /home -type f -size +1M -size -10M
Найти файлы с помощью отметок времени
Возможно, вы уже знаете, что Linux назначает определенные временные метки каждому файлу в вашем хранилище. Эти отметки времени содержат время модификации, время изменения и время доступа.
Чтобы найти файлы с определенным временем модификации:
find /home -type f -name "*.txt" -mtime 5
Вышеупомянутая команда распечатает все файлы, которые были изменены за последние пять дней. Точно так же вы можете использовать -atime и -ctime для фильтрации файлов по времени доступа и времени изменения.
Вы также можете использовать знаки плюс и минус, чтобы найти файлы, размер которых больше или меньше определенной отметки времени.
find /home -type f -name "*.txt" -mtime +5
Поиск файлов с определенными разрешениями
Параметр -perm позволяет пользователям искать файлы с определенным набором разрешений.
find /home -type f -perm 777
Используйте символ косой черты ( / ) для перечисления файла, если хотя бы одна категория имеет правильный набор предоставленных разрешений.
find /home -type f -perm /777
Найти файлы по владельцу
Используйте флаг -user, чтобы получить файлы, принадлежащие определенному пользователю.
find /home -user randomuser
Найти и удалить файлы
Чтобы удалить все отфильтрованные файлы с помощью команды find, добавьте в конец команды флаг -delete .
find /home -type f -name "*.pdf" -delete
Вышеупомянутая команда удалит все файлы PDF, которые находятся в каталоге / home .
Вы не сможете удалить непустые каталоги с помощью find. Вам нужно будет использовать команду rm для удаления таких папок в вашей системе Linux.
Организация файлов в Linux
Найти файлы сложно, если в вашей системе есть сотни каталогов без подходящих имен. Команда find пригодится, когда вы хотите отфильтровать файлы в каталоге по одному конкретному критерию.
Чтобы получить максимальную отдачу от хранилища в системе Linux, необходимы организация файлов и управление ими. Правильная группировка папок и удаление избыточных данных могут помочь вам быстро получить доступ к нужным файлам.