Linux и UNIX: программирование в shell. Руководство разработчика. - страница 10
Общий формат команды find таков:
find путевое_имя -oпции
где путевое_имя — это каталог, с которого необходимо начинать поиск. Символ '.' служит для обозначения текущего каталога, символ '/' — корневого каталога, а символ '~' — записанного в переменной $НОМЕ начального каталога текущего пользователя.
2.1. Опции команды find
Остановимся на описании основных опций команды find . Таблица 2.1. Основные опции команды find
-name | Поиск файлов, имена которых соответствуют заданному шаблону |
Запись полных имен найденных файлов в стандартный поток вывода | |
-perm | Поиск файлов, для которых установлен указанный режим доступа |
-prune | Применяется для того, чтобы команда find не выполняла рекурсивный поиск по уже найденному путевому имени; если указана опция -depth, опция -prune игнорируется |
-user | Поиск файлов, принадлежащих указанном пользователю |
-group | Поиск файлов, которые принадлежат данной группе |
-mtime -n +n | Поиск файлов, содержимое которых модифицировалось менее чем (-) или более чем (+) n дней назад; имеются также опции -atime и -ctime, которые позволяют осуществлять поиск файлов соответственно по дате последнего чтения и дате последнего изменения атрибутов файла |
-nogroup | Поиск файлов, принадлежащих несуществующей группе, для которой, иначе говоря, отсутствует запись в файле /etc/groups |
-nouser | Поиск файлов, принадлежащих несуществующему пользователю, для которого, другими словами, отсутствует запись в файле |
/etc/passwd | |
-newer файл | Поиск файлов, которые созданы позднее, чем указанный файл |
-type | Поиск файлов определенного типа, а именно: |
b -cпециальный блочный файл; | |
d — каталог; | |
с -cпециальный символьный файл; | |
p — именованный канал; | |
1 -cимволическая ссылка; | |
s -cокет; | |
f -oбычный файл | |
-size n | Поиск файлов, размер которых составляет n единиц; возможны |
следующие единицы измерения: | |
b — блок размером 512 байтов (установка по умолчанию); | |
c — байт; | |
k — килобайт (1024 байта); | |
w — двухбайтовое слово | |
-depth | При поиске файлов сначала просматривается содержимое текущего каталога и лишь затем проверяется запись, соответствующая самому каталогу |
-fstype | Поиск файлов, которые находятся в файловой системе определенного типа; обычно соответствующие сведения хранятся в файле /etc/fstab, который содержит данные о файловых системах, используемых на локальном компьютере |
-mount | Поиск файлов только в текущей файловой системе; аналогом этой опции является опция -xdev |
-exec | Выполнение команды интерпретатора shell для всех обнаруженных |
файлов; выполняемые команды имеют формат | |
команда {} \; | |
(обратите внимание на наличие пробела между символами {} и | |
-ok | Аналогична опции -exec, но перед выполнением команды отображается запрос |
2.1.1. Опция -name
При работе с командой find чаще всего используется опция -name. После нее в кавычках должен быть указан шаблон имени файла.
Если необходимо найти все файлы с расширением txt в вашем начальном каталоге, укажите символ '~' в качестве путевого имени. Имя начального каталога будет извлечено из переменной $номе.
>$ find ~ -name "*.txt" — print
Чтобы найти все файлы с расширением txt, находящиеся в текущем каталоге, следует воспользоваться такой командой:
>$ find . — name "*.txt" — print
Для нахождения в текущем каталоге всех файлов, в именах которых встречается хотя бы один символ в верхнем регистре, введите следующую команду:
>$ find . — name "[A‑Z]*" — print
Найти в каталоге /etc файлы, имена которых начинаются с символов "host", позволяет команда
>$ find /etc -name "host*" — print
Поиск в начальном каталоге всех файлов с расширением txt, а также файлов, имена которых начинаются с точки, производит команда
>$ find ~ -name "*.txt" — print -o -name ".*" — print
Опция -o является обозначением операции логического ИЛИ. В случае ее применения помимо файлов с обычными именами будут найдены файлы, имена которых начинаются с точки.
Если вы хотите получить список всех файлов в системе, не имеющих расширения, выполните представленную ниже команду, «о будьте осторожны, так как она может существенно замедлить работу системы:
>$ find / -name "*" — print
Ниже показано, как найти все файлы, в именах которых сначала следуют символы нижнего регистра, а за ними — две цифры и расширение .txt (например, ах37.txt):