- Команда find в Linux
- Основная информация о Find
- Основные параметры команды find
- Критерии
- Примеры использования
- 1. Поиск всех файлов
- 2. Поиск файлов в определенной папке
- 3. Ограничение глубины поиска
- 4. Инвертирование шаблона
- 5. Несколько критериев
- 6. Тип файла
- 6. Несколько каталогов
- 7. Поиск скрытых файлов
- 8. Поиск по разрешениям
- 9. Поиск файлов в группах и пользователях
- 10. Поиск по дате модификации
- 11. Поиск файлов по размеру
- 12. Поиск пустых файлов и папок
- 13. Действия с найденными файлами
- Выводы
- 25 примеров использования команды find для начинающих знакомство с Linux
- 1)Выведите списки всех файлов текущей директории и ее подкаталогов
- 2)Найдите все файлы и директории в вашей текущей рабочей директории
- 3)Выведите список всех файлов определенной директории
- 4)Найдите файл по имени в директории
- 5)Найдите файл во множестве директорий
- 6)Найдите файл по имени без учета регистра
- 7)Найдите все типы файлов отличные от упомянутого
- 8)Найдите файлы по множеству признаков
- 9)Найдите файлы с использованием условия OR
- 10)Поиск файлов на основе разрешений
- 11)Найдите все скрытые файлы
- 12)Найдите все файлы со SGID
- 13) Найдите все файлы со SUID
- 14)Найдите все исполняемые файлы
- 15)Найдите файлы с доступом только для чтения
- 16)Найдите все файлы пользователя
- 17)Найдите все файлы группы
- 18)Найдите все файлы определенного размера
- 19)Найдите все файлы в диапазоне размеров
- 20)Найдите файлы, измененные N дней назад
- 21)Найдите файлы, в которые заходили N дней назад
- 22)Найдите все пустые файлы и директории
- 23)Найдите самый большой и самый маленький файлы
- 24)Найдите все файлы с определенным доступом и сменить его на 644 (или еще на что-нибудь)
- 25)Найдите все файлы, подходящие по определенным критериям, и удалите их
Команда find в Linux
Очень важно уметь вовремя найти нужную информацию в системе. Конечно, все современные файловые менеджеры предлагают отличные функции поиска, но им не сравнится с поиском в терминале Linux. Он намного эффективнее и гибче обычного поиска, вы можете искать файлы не только по имени, но и по дате добавления, содержимому, а также использовать для поиска регулярные выражения.
Кроме того, с найденными файлами можно сразу же выполнять необходимые действия. В этой статье мы поговорим о поиске с помощью очень мощной команды find Linux, подробно разберем её синтаксис, опции и рассмотрим несколько примеров.
Основная информация о Find
Команда find — это одна из наиболее важных и часто используемых утилит системы Linux. Это команда для поиска файлов и каталогов на основе специальных условий. Ее можно использовать в различных обстоятельствах, например, для поиска файлов по разрешениям, владельцам, группам, типу, размеру и другим подобным критериям.
Утилита find предустановлена по умолчанию во всех Linux дистрибутивах, поэтому вам не нужно будет устанавливать никаких дополнительных пакетов. Это очень важная находка для тех, кто хочет использовать командную строку наиболее эффективно.
Команда find имеет такой синтаксис:
find [ папка] [ параметры] критерий шаблон [действие]
Папка — каталог в котором будем искать
Параметры — дополнительные параметры, например, глубина поиска, и т д
Критерий — по какому критерию будем искать: имя, дата создания, права, владелец и т д.
Шаблон — непосредственно значение по которому будем отбирать файлы.
Основные параметры команды find
Я не буду перечислять здесь все параметры, рассмотрим только самые полезные.
- -P — никогда не открывать символические ссылки.
- -L — получает информацию о файлах по символическим ссылкам. Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.
- -maxdepth — максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.
- -depth — искать сначала в текущем каталоге, а потом в подкаталогах.
- -mount искать файлы только в этой файловой системе.
- -version — показать версию утилиты find.
- -print — выводить полные имена файлов.
- -type f — искать только файлы.
- -type d — поиск папки в Linux.
Критерии
Критериев у команды find в Linux очень много, и мы опять же рассмотрим только основные.
- -name — поиск файлов по имени.
- -perm — поиск файлов в Linux по режиму доступа.
- -user — поиск файлов по владельцу.
- -group — поиск по группе.
- -mtime — поиск по времени модификации файла.
- -atime — поиск файлов по дате последнего чтения.
- -nogroup — поиск файлов, не принадлежащих ни одной группе.
- -nouser — поиск файлов без владельцев.
- -newer — найти файлы новее чем указанный.
- -size — поиск файлов в Linux по их размеру.
Примеры использования
А теперь давайте рассмотрим примеры find, чтобы вы лучше поняли, как использовать эту утилиту.
1. Поиск всех файлов
Показать все файлы в текущей директории:
Все три команды покажут одинаковый результат. Точка здесь означает текущую папку. Вместо неё можно указать любую другую.
2. Поиск файлов в определенной папке
Показать все файлы в указанной директории:
Искать файлы по имени в текущей папке:
Поиск по имени в текущей папке:
Не учитывать регистр при поиске по имени:
3. Ограничение глубины поиска
Поиска файлов по имени в Linux только в этой папке:
find . -maxdepth 1 -name «*.php»
4. Инвертирование шаблона
Найти файлы, которые не соответствуют шаблону:
5. Несколько критериев
Поиск командой find в Linux по нескольким критериям, с оператором исключения:
find . -name «test» -not -name «*.php»
Найдет все файлы, начинающиеся на test, но без расширения php. А теперь рассмотрим оператор ИЛИ:
find -name «*.html» -o -name «*.php»
Эта команда найдёт как php, так и html файлы.
6. Тип файла
По умолчанию find ищет как каталоги, так и файлы. Если вам необходимо найти только каталоги используйте критерий type с параметром d. Например:
find . -type d -name «Загрузки»
Для поиска только файлов необходимо использовать параметр f:
find . -type f -name «Загрузки»
6. Несколько каталогов
Искать в двух каталогах одновременно:
find ./test ./test2 -type f -name «*.c»
7. Поиск скрытых файлов
Найти скрытые файлы только в текущей папке. Имена скрытых файлов в Linux начинаются с точки:
find . -maxdepth 1 -type f -name «.*»
8. Поиск по разрешениям
Найти файлы с определенной маской прав, например, 0664:
Права также можно задавать буквами для u (user) g (group) и o (other). Например, для того чтобы найти все файлы с установленным флагом Suid в каталоге /usr выполните:
sudo find /usr -type f -perm /u=s
Поиск файлов доступных владельцу только для чтения только в каталоге /etc:
find /etc -maxdepth 1 -perm /u=r
Найти только исполняемые файлы:
find /bin -maxdepth 2 -perm /a=x
9. Поиск файлов в группах и пользователях
Найти все файлы, принадлежащие пользователю:
Поиск файлов в Linux принадлежащих группе:
find /var/www -group www-data
10. Поиск по дате модификации
Поиск файлов по дате в Linux осуществляется с помощью параметра mtime. Найти все файлы модифицированные 50 дней назад:
Поиск файлов в Linux открытых N дней назад:
Найти все файлы, модифицированные между 50 и 100 дней назад:
Найти файлы измененные в течении часа:
11. Поиск файлов по размеру
Найти все файлы размером 50 мегабайт:
От пятидесяти до ста мегабайт:
Найти самые маленькие файлы:
find . -type f -exec ls -s <> \; | sort -n -r | head -5
find . -type f -exec ls -s <> \; | sort -n | head -5
12. Поиск пустых файлов и папок
13. Действия с найденными файлами
Для выполнения произвольных команд для найденных файлов используется опция -exec. Например, для того чтобы найти все пустые папки и файлы, а затем выполнить ls для получения подробной информации о каждом файле используйте:
Удалить все текстовые файлы в tmp
find /tmp -type f -name «*.txt» -exec rm -f <> \;
Удалить все файлы больше 100 мегабайт:
find /home/bob/dir -type f -name *.log -size +100M -exec rm -f <> \;
Выводы
Вот и подошла к концу эта небольшая статья, в которой была рассмотрена команда find. Как видите, это одна из наиболее важных команд терминала Linux, позволяющая очень легко получить список нужных файлов. Ее желательно знать всем системным администраторам. Если вам нужно искать именно по содержимому файлов, то лучше использовать команду grep.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
25 примеров использования команды find для начинающих знакомство с Linux
Команда find — это одна из самых полезных и важных команд на Linux.
Она по умолчанию установлена и доступна практически на всех версиях Linux. В Linux все хранится в виде файлов, и очевидно стоит знать, как эти файлы искать.
С помощью команды find можно искать интересующие файлы по ряду поисковых критериев. Критерии можно указывать как вместе, так и по отдельности, а затем уже совершать действия с полученном результатом. В этом руководстве мы собираемся описать команду find с помощью примеров использования.
1)Выведите списки всех файлов текущей директории и ее подкаталогов
Для того чтобы вывести списки всех файлов текущей директории и ее подкаталогов, мы можем использовать:
В качестве альтернативы, мы можем также использовать ‘find . ’ , которая выдаст вам тот же результат.
2)Найдите все файлы и директории в вашей текущей рабочей директории
Если нужно найти только директории, то можно использовать:
Чтобы найти только файлы, а не директории:
3)Выведите список всех файлов определенной директории
Для того чтобы найти файлы из определенной директории надо ввести:
This command will look for all the files in /root directory.
4)Найдите файл по имени в директории
Для поиска файла по имени в определенной директории введите:
$ find /root -name "linuxtechi.txt"
Эта команда будет искать файл linuxtechi.txt в директории /root. Так же мы найти все файлы с расширением .txt:
5)Найдите файл во множестве директорий
Для поиска файлов во множестве директорий введите:
$ find /root /etc -name "linuxtechi.txt"
With this command, we can look for linuxtechi.txt file in /root & /etc directories.
С помощью этой команды мы можем найти файл linuxtechi.txt в директориях /root и /etc .
6)Найдите файл по имени без учета регистра
Ищите файлы без учета регистра с помощью -iname:
$ find /root -iname "Linuxtechi.txt"
В результате вы получите все файлы с названием linuxtechi.txt. При этом файлов может быть несколько, так как linuxtechi.txt будет равняться LINUXTECHI.txt .
7)Найдите все типы файлов отличные от упомянутого
Давайте предположим, что нам необходимо найти все файлы отличные от определенного типа файлов. Чтобы этого добиться вводим:
8)Найдите файлы по множеству признаков
Мы можем совмещать более чем одно условие при поиске файлов. Предположим, что нам нужны файлы с расширениями .txt и .html :
9)Найдите файлы с использованием условия OR
Так же мы можем совмещать несколько поисковых критериев, что приведет к поиску файлов на основе удовлетворения одному из условий. Делается это с помощью оператора OR:
$ find -name "*.txt" -o -name "linuxtechi*"
10)Поиск файлов на основе разрешений
Чтобы найти файлы с определенным доступом используйте -perm :
$ find /root -type f -perm 0777
11)Найдите все скрытые файлы
Для поиска скрытых файлов в директории введите:
12)Найдите все файлы со SGID
Для поиска файлов с битами SGID исполните команду:
13) Найдите все файлы со SUID
Для поиска файлов с битами SUID используем:
14)Найдите все исполняемые файлы
Для поиска только исполняемых файлов введите:
15)Найдите файлы с доступом только для чтения
К тому же, с помощью команды find можно найти файлы, доступные только для чтения:
16)Найдите все файлы пользователя
Для поиска файлов определенного пользователя надо использовать следующую команду:
17)Найдите все файлы группы
Для поиска файлов определенной группы используем:
18)Найдите все файлы определенного размера
Если мы хотим искать, размер которого нам известен, тогда можно использовать -size :
19)Найдите все файлы в диапазоне размеров
Если мы ищем файл, размер которого нам не известен, но зато мы знаем примерный его размер, или нам просто сделать выборку файлов в определенном диапазоне размеров, то можно ввести:
Можно использовать команд find при поиске файлов тяжелее, чем, например, 50 mb:
20)Найдите файлы, измененные N дней назад
For example, we want to locate all the files that have been modified 8 days ago. We can accomplish that using ‘-mtime‘ option in find command
Например, мы можем обнаружить найти все файлы отредактированные 8 дней назад. Делается это с помощью команды -mtime:
21)Найдите файлы, в которые заходили N дней назад
Можно найти файлы, в которые входили 8 дней назад с помощью -atime:
22)Найдите все пустые файлы и директории
Для нахождения всех пустых файлов в системе введем:
А чтобы вывести их директории:
23)Найдите самый большой и самый маленький файлы
Для вывода списка самых больших или самых маленьких файлов используем find в связке с sort , и, если нам понадобится вывести 3 «самых-самых», то используем еще head .
Для вывода трех файлов из текущей директории введем:
$ find . -type f -exec ls -s <> \; | sort -n -r | head -3
Схожим образом мы можем вывести самые маленькие файлы текущей директории:
$ find . -type f -exec ls -s <> \; | sort -n | head -3
24)Найдите все файлы с определенным доступом и сменить его на 644 (или еще на что-нибудь)
Команда find может предложить продвинутые варианты использования. К примеру, мы может изменить все разрешения 644 определенных файлов на 777. Для этого исполняем:
$ find / -type f -perm 644 -print -exec chmod 777 <> \;
25)Найдите все файлы, подходящие по определенным критериям, и удалите их
Рано или поздно может понадобиться удалить те или иные файлы. Если так произошло, то вводим:
$ find / -type f -name 'linuxtechi.*' -exec rm -f <> \;
Вышеуказанные примеры отлично демонстрируют возможности команды find , которая способна существенно упростить задачу поиска файлов.