Найти по имени
Самая простая команда, которую мы можем использовать для поиска файла, - по определенному имени в каталоге. Преимущество этой команды в том, что bash найдет файл, даже если он присутствует в одном из рекурсивных каталогов внутри переданного пути к каталогу. Давайте посмотрим на пример:
найти код -name ifelse4.шЭта команда найдет файл ifelse4.sh рекурсивно внутри каталога Code. Посмотрим, что выводит эта команда:
Найти файл по имени
Опция имени, о которой мы упоминали выше, чувствительна к регистру. Если вы хотите найти файл независимо от регистра в имени, используйте следующую команду: найти код -iname ifelse4.ш
Поиск файла по регулярному выражению
Мы можем использовать простые регулярные выражения, чтобы найти файл в каталоге, который соответствует этому регулярному выражению. Продемонстрируем это с помощью простой команды, чтобы найти все файлы с любым именем и с расширением .текст:
найти код -regex ".* \.ш "Вот что мы получаем с помощью этой команды:
Поиск файла по регулярному выражению
Давайте разберемся, что здесь означает эта команда:
- -регулярное выражение: это просто означает, что мы собираемся передать регулярное выражение следующим.
- В регулярном выражении первая точка (.) означает, что любое количество символов в имени файла должно совпадать.
- Далее с помощью * мы сопоставляем любое количество повторений любого символа (в зависимости от точки).
- Наконец, мы сопоставляем все файлы с .расширение sh.
Преимущество регулярного выражения в том, что его можно сделать настолько гибким, насколько вы можете определить. Давайте изменим пример выше, чтобы найти файлы с .ш и .txt также:
найти код -regex ".* \.ш | \.текст"Поиск файлов, измененных за последние n минут
Также легко найти файл, который был изменен за последние n минут. Сразу посмотрим на пример:
найти код -mmin -90Посмотрим, что выводит эта команда:
Поиск файла, измененного за последние 90 минут
Поиск файлов, измененных за последние n дней
Также легко найти файл, который был изменен за последние n дней. Сразу посмотрим на пример:
найти код -mtime 0Вот что мы получаем с помощью этой команды:
Найти файл по дням
Поиск файлов по разрешениям
Также возможен поиск файла с определенными разрешениями. Мы можем найти файлы, связанные с пользователем или группой пользователей:
найти . -пользователь shubhamВот что мы получаем с помощью этой команды:
Поиск файлов, принадлежащих пользователю
Мы также можем применить ту же логику для поиска файлов, принадлежащих группе пользователей: найти . -корень группы
Поиск файлов по размеру
Чтобы найти файлы, размер которых превышает указанный размер, можно найти с помощью следующей команды:
найти Код-размер +500Вот что мы получаем с помощью этой команды:
Найти файл по размеру
Помимо байтов, размер файла может быть указан как:
- b: 512-байтовые блоки: это единица измерения по умолчанию, если ни один не указан
- c: байты
- k: килобайты
- M: мегабайты
- G: гигабайты
Поиск файлов по типу
Можно найти файл с видом. У нас есть следующие типы команды поиска:
- d: каталог
- f: обычный файл
- l: символическая ссылка
- b: буферный блок
- c: небуферизованный символ
- p: именованный канал
- s: гнездо
Давайте воспользуемся командой, чтобы найти обычный файл:
найти . -тип fВот что мы получаем с помощью этой команды:
Найдите файлы по типу
Поиск файлов с несколькими условиями
В качестве последнего примера можно найти файлы, добавив несколько условий, как мы видели выше. Теперь попробуем несколько условий в одной команде поиска:
найти . -size + 1c -and -name "*.ш "Вот что мы получаем с помощью этой команды:
Найдите файлы с несколькими условиями
Заключение
В этом уроке мы рассмотрели, как с помощью команды find найти любые файлы с каким-либо именем, разрешениями или типом. Мы даже можем добавить несколько условий, чтобы найти файлы, которые удовлетворяют всем условиям. Еще больше поиграйте с командами, чтобы пополнить запас сил.