10+ способов использовать команду find в Linux
Вы когда-нибудь ловили себя на том, что лихорадочно ищете важный файл только для того, чтобы понять, что вы потратили много часов, пытаясь заглянуть во все каталоги, но файл нигде не был найден? Что ж, это распространенная проблема, с которой сталкивается большинство пользователей Linux, особенно новые пользователи с огромным количеством неорганизованных файлов и каталогов. В этой статье мы объясним, как вы можете искать файлы и каталоги различными способами с помощью команды find в Linux.
Что такое команда find в Linux
Команда find является одним из наиболее важных инструментов, помогающих пользователям Linux искать свои файлы и папки с помощью различных параметров. Вы даже можете выполнять команды оболочки для возвращенных элементов поиска (подробнее об этом позже!). Синтаксис поиска файлов и каталогов с помощью команды find:
находить
Вот как мы объясним приведенный выше синтаксис:
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
различные параметры, используемые для уточнения поиска указывает место в памяти, в котором команда find будет искать указывает элемент поиска для поиска
Вот некоторые из распространенных параметров для сопряжения с командой find: OptionsDescription-nameЭта опция используется для указания имени файла или папки.-typeУказывает тип искомых элементов.-execФлаг exec используется для выполнения команд оболочки. на выходе.-sizeЭтот флаг фильтрует элементы в зависимости от размера занимаемой ими памяти.-permЭтот флаг фильтрует файлы и каталоги на основе их разрешений.-userЭтот флаг используется для поиска файлов и каталогов, принадлежащих определенному пользователю.
Лучшие способы использования команды find в Linux
Самый распространенный способ поиска файлов и каталогов с помощью команды find в Linux — это их соответствующее имя. Если вы не знаете точное имя файла, команда find, будучи очень универсальной, может использоваться для поиска файлов даже по части имени.
1. Найдите определенные файлы с совпадающим именем
Для поиска файлов и каталогов с помощью команды find используйте флаг -iname. Преимущество поиска с этим флагом заключается в том, что он будет искать заданное имя, игнорируя регистр имени файла. Синтаксис использования команды find с флагом -iname следующий:
находить
Например, если вы хотите найти файл «test.txt» в текущем каталоге, используйте эту команду:
находить . -iname “test.txt”
Здесь ‘.’ представляет текущий каталог с точки зрения режима относительной адресации для местоположения файла. Вместо этого вы даже можете использовать режим абсолютной адресации для расположения файла, если вам трудно понять относительный режим.
Флаг «-iname» игнорирует регистр имен файлов. Для поиска имен файлов, точно совпадающих с именем файла, просто замените флаг -iname на флаг -name:
находить
2. Найдите файлы по шаблону имени в Linux
Иногда вам нужно работать с важным файлом, но вы не можете вспомнить полное имя файла. Даже в этой ситуации команда find может стать вашим спасением. Просто используйте подстановочные знаки, чтобы соответствовать шаблону имени вашего файла. Затем подстановочные знаки попытаются сопоставить данный шаблон со всеми доступными именами. Предположим, вам нужно найти файл «test-101.py» в текущем каталоге, вы можете использовать следующую команду:
Это перечислит различные файлы, начинающиеся с имени «тест» в их именах файлов, как показано ниже:
находить . -type f -iname “тест*”
Здесь добавляется тип f, чтобы указать тип элемента поиска в виде файлов. Кроме того, обязательно используйте подстановочное выражение в паре двойных кавычек, чтобы предотвратить любые ошибки.
3. Найдите файлы или каталоги с совпадающими именами
Как правило, команда find ищет все файлы и каталоги, соответствующие имени. Для поиска только файлов используйте опцию «-type f» с основным синтаксисом:
находить
Например, следующая команда покажет все файлы с именем «тест»:
находить . -type f -iname “тест*”
Для поиска только каталогов используйте флаг «-type d», например:
находить
Например, следующая команда покажет все каталоги с именем «test»:
находить . -type d -iname “тест*”
4. Найдите файлы с определенным расширением
С помощью смертоносной комбинации подстановочных знаков и команды find вы даже можете искать файлы по их расширениям. Например, если вам нужно найти файл конфигурации в текущем каталоге, но вы не знаете точное имя, вы можете использовать команду:
находить . -имя “*.conf”
5. Найдите файлы и каталоги по размеру
В сочетании с соответствующими дескрипторами размера вы можете использовать команду find с флагом -size для поиска файлов и каталогов в Linux на основе их размера, занимаемого в памяти. Кроме того, можно добавить различные дескрипторы размера, чтобы указать предельный размер файла для поиска.
Основной синтаксис для поиска файлов в Linux по размеру:
находить
Приведенный выше синтаксис такой же, как и предыдущие, за исключением «-size
- Для
части вы можете указать «+» или «-» или даже оставить это поле пустым. Здесь «+» означает поиск файлов/каталогов, превышающих заданный размер, а «-» указывает на поиск файлов/каталогов меньше заданного размера. Если оставить его пустым, команда find будет искать файлы, точно соответствующие размеру. указывает размер файла/каталога. относится к диапазону размера файла, который вы хотите найти.
Вы можете использовать следующие типы дескрипторов размера: Описание дескриптора размераcУказывает команду find для поиска размера в байтах.Sуказывает команду find для поиска размера в килобайтах.
Приведенный выше синтаксис может показаться очень сложным для некоторых пользователей, но некоторые примеры облегчат его понимание.
- Если вам нужно просмотреть каталоги, равные 4 КБ в каталоге Documents, используйте эту команду:
найти ~/Документы -тип d -размер 4k
- Или, если у вас мало места и вам нужно просмотреть файлы размером более 100 МБ в каталоге «Документы», используйте эту команду:
найти ~/Документы -тип f -размер +100M
- Если вам нужно просмотреть файлы размером менее 10 МБ в каталоге Documents, используйте эту команду:
найти ~/Документы -тип f -размер -10M
- Если вам нужно просмотреть пустые файлы в каталоге Documents, используйте эту команду:
найти ~/Документы -тип f -размер 0
6. Найдите файлы и каталоги, соответствующие определенному разрешению
Разрешения в Linux имеют первостепенное значение для защиты файлов и каталогов от непреднамеренного доступа. Чтобы узнать больше, ознакомьтесь с нашим исчерпывающим руководством по разрешениям в Linux.
Чтобы найти файлы и каталоги на основе набора разрешений, используйте этот синтаксис:
находить В приведенном выше синтаксисе вы можете использовать как абсолютный, так и относительный режим адресации. Предположим, вам нужно найти файлы с правами только на чтение для root, используйте эту команду: find ~/Documents/test/ -type f -perm 400 Или, если вы хотите найти файлы с правами чтения и записи для всех пользователей, используйте эту команду: find ~/Documents/test/ -type f -perm a=r+w Как мы объясняли ранее, вы можете искать файлы на основе разрешений, установленных для файла с помощью команды find в Linux. Теперь мы покажем вам, как просмотреть файлы, принадлежащие конкретному пользователю. Основной синтаксис остается в основном таким же, за исключением нового флага -user, который указывает команду find для поиска файлов, принадлежащих этому пользователю: находить Например, если вы хотите увидеть файлы, принадлежащие пользователю «test» в текущем каталоге, используйте эту команду: находить . -тип f -пользовательский тест С помощью флага -exec вы можете выполнять настоящие команды оболочки с помощью команды find и, таким образом, многократно повышать ее функциональность. Флаг -exec выполняет команды оболочки для каждого возвращенного результата поиска. Основной синтаксис для использования команды find с флагом -exec: находить В приведенном выше синтаксисе {} используются для вставки результатов поиска, найденных командой find внутри команды оболочки. Пример сделает это более понятным. Предположим, вы хотите скопировать файл с именем test.txt из текущего каталога в /tmp/docs/, используйте эту команду: находить . -iname переименование.sh -exec cp {} ./testing \; В приведенном выше примере, когда файл «renameing.sh» найден, он напрямую подключается вместо «{}», где выполняется обычная процедура копирования. Последняя точка с запятой (;) обозначает завершение команды. Давайте теперь посмотрим, как несколько файлов обрабатываются флагом -exec. Допустим, вы хотите переместить все файлы .pdf в текущем каталоге в новый каталог с именем «ftesting» в домашнем каталоге, вы можете использовать эту команду: find .-name “*.pdf” -exec mv {} ./testing + \; Если вы хотите переименовать с помощью команды mv, ознакомьтесь с нашей статьей о том, как переименовать файл в Linux, где мы обсудили четыре различных метода переименования файлов. Иногда вам может понадобиться удалить определенные файлы/каталоги в Linux. Можно подумать, что для него нужно написать сложный сценарий оболочки. Однако с помощью команды -exec вы можете легко удалять файлы или каталоги, отфильтрованные командами поиска на основе заданных правил. Основной синтаксис для удаления файлов с помощью команды find: находить Некоторым пользователям может показаться, что приведенная выше команда трудна для понимания. Чтобы упростить задачу, вы можете использовать флаг -delete вместо всей части -exec для удаления элементов. Синтаксис для удаления файлов с использованием флага -delete с командой find в Linux: находить Удаление файла/каталога работает так же, как использование команды find для его поиска. Синтаксис для удаления файла с помощью find: находить Допустим, вы хотите удалить файл «test.txt» в текущем каталоге, вы можете использовать эту команду как: находить . -type f -name test.txt -delete Удалить файлы с частично совпадающим именем Если вы удаляете файл и все, что вы можете вспомнить, это часть имени, вы можете использовать подстановочные знаки, чтобы найти все виды совпадающих имен с данным именем файла. Синтаксис для удаления файлов и каталогов с частичным именем с помощью команды find в Linux: находить Например, чтобы удалить все файлы, начинающиеся с имени «тест», используйте эту команду: находить . -type f -name “test*” -delete Удалить файлы с одинаковым расширением Когда вам нужно удалить все файлы с одинаковым расширением в каталоге, все, что вам нужно сделать, это добавить флаг -delete в конце. Синтаксис для удаления всех файлов с одинаковыми расширениями: находить Например, если вы хотите удалить все файлы .pdf в текущем каталоге, вы можете использовать эту команду: находить . -type f -name “*.pdf” -delete Если вы хотите узнать больше о способах удаления файлов и каталогов в Linux, ознакомьтесь со статьями о том, как удалить файл в Linux и как удалить каталог в Linux. Мы рекомендуем вам всегда сначала запускать команду find без флага удаления. Как только вы будете довольны результатами, вы можете применить флаг -delete, чтобы окончательно удалить элементы. Удалить пустые файлы и каталоги с помощью команды find Удалить пустые файлы и каталоги довольно просто. Просто добавьте флаг -delete в конце, чтобы команда нашла пустые папки и файлы в Linux. Синтаксис для удаления пустых файлов и папок: находить 7. Найдите файлы и каталоги, принадлежащие пользователю
8. Использование команды find с флагом -exec
9. Поиск и удаление файлов и каталогов в Linux