25 примеров использования команды find для начинающих знакомство с Linux
Команда find - это одна из самых полезных и важных команд на Linux.
Она по умолчанию установлена и доступна практически на всех версиях Linux. В Linux все хранится в виде файлов, и очевидно стоит знать, как эти файлы искать.
С помощью команды find можно искать интересующие файлы по ряду поисковых критериев. Критерии можно указывать как вместе, так и по отдельности, а затем уже совершать действия с полученном результатом. В этом руководстве мы собираемся описать команду find с помощью примеров использования.
1)Выведите списки всех файлов текущей директории и ее подкаталогов
Для того чтобы вывести списки всех файлов текущей директории и ее подкаталогов, мы можем использовать:
$ find
В качестве альтернативы, мы можем также использовать ‘find . ’, которая выдаст вам тот же результат.
2)Найдите все файлы и директории в вашей текущей рабочей директории
Если нужно найти только директории, то можно использовать:
$ find . -type d
Чтобы найти только файлы, а не директории:
$ find . -type f
3)Выведите список всех файлов определенной директории
Для того чтобы найти файлы из определенной директории надо ввести:
$ find /root
This command will look for all the files in /root directory.
4)Найдите файл по имени в директории
Для поиска файла по имени в определенной директории введите:
$ find /root -name "linuxtechi.txt"
Эта команда будет искать файл linuxtechi.txt в директории /root. Так же мы найти все файлы с расширением .txt:
$ find /root -name "*.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)Найдите все типы файлов отличные от упомянутого
Давайте предположим, что нам необходимо найти все файлы отличные от определенного типа файлов. Чтобы этого добиться вводим:
$ find /root -not -name "*.txt"
8)Найдите файлы по множеству признаков
Мы можем совмещать более чем одно условие при поиске файлов. Предположим, что нам нужны файлы с расширениями .txt и .html:
$ find . -regex ".*\.\(txt\|html\)$"
9)Найдите файлы с использованием условия OR
Так же мы можем совмещать несколько поисковых критериев, что приведет к поиску файлов на основе удовлетворения одному из условий. Делается это с помощью оператора OR:
$ find -name "*.txt" -o -name "linuxtechi*"
10)Поиск файлов на основе разрешений
Чтобы найти файлы с определенным доступом используйте -perm:
$ find /root -type f -perm 0777
11)Найдите все скрытые файлы
Для поиска скрытых файлов в директории введите:
$ find ~ -type f name ".*"
12)Найдите все файлы со SGID
Для поиска файлов с битами SGID исполните команду:
$ find . -perm /g=s
13) Найдите все файлы со SUID
Для поиска файлов с битами SUID используем:
$ find . -perm /u=s
14)Найдите все исполняемые файлы
Для поиска только исполняемых файлов введите:
$ find . -perm /a=x
15)Найдите файлы с доступом только для чтения
К тому же, с помощью команды find можно найти файлы, доступные только для чтения:
$ find /root -perm /u=r
16)Найдите все файлы пользователя
Для поиска файлов определенного пользователя надо использовать следующую команду:
$ find . -user linuxtechi
17)Найдите все файлы группы
Для поиска файлов определенной группы используем:
$ find . -group apache
18)Найдите все файлы определенного размера
Если мы хотим искать, размер которого нам известен, тогда можно использовать -size:
$ find / -size -2M
19)Найдите все файлы в диапазоне размеров
Если мы ищем файл, размер которого нам не известен, но зато мы знаем примерный его размер, или нам просто сделать выборку файлов в определенном диапазоне размеров, то можно ввести:
$ find / -size +2M -size -5M
Можно использовать команд find при поиске файлов тяжелее, чем, например, 50 mb:
$ find / -size +50M
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:
$ find / -mtime 8
21)Найдите файлы, в которые заходили N дней назад
Можно найти файлы, в которые входили 8 дней назад с помощью -atime:
$ find / -atime 8
22)Найдите все пустые файлы и директории
Для нахождения всех пустых файлов в системе введем:
$ find / -type f -empty
А чтобы вывести их директории:
$ find ~/ -type d -empty
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, которая способна существенно упростить задачу поиска файлов.