Чтение онлайн

ЖАНРЫ

Linux и UNIX: программирование в shell. Руководство разработчика
Шрифт:

Общий формат команды find таков:

find путевое_имя -oпции

где путевое_имя — это каталог, с которого необходимо начинать поиск. Символ '.' служит для обозначения текущего каталога, символ '/' — корневого каталога, а символ '~' — записанного в переменной $НОМЕ начального каталога текущего пользователя.

2.1. Опции команды find

Остановимся на описании основных опций команды find . Таблица 2.1. Основные опции команды find

– name

Поиск

файлов, имена которых соответствуют заданному шаблону

– print

Запись полных имен найденных файлов в стандартный поток вывода

– 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):

$ find . — name "[a-z][a-z][0—9][0—9].txt" — print

2.1.2. Опция -perm

Опция -perm позволяет находить файлы с заданным режимом доступа. Например, для поиска файлов с режимом доступа 755 (их может просматривать и выполнять любой пользователь, но только владелец имеет право осуществлять запись) следует воспользоваться такой командой:

$ find . — perm 755 -print

Если перед значением режима вставить дефис, будет произведен поиск файлов, Для которых установлены все указанные биты разрешений, остальные биты при этом

игнорируются. Например, следующая команда ищет файлы, к которым другие пользователи имеют полный доступ:

$ find . — perm -007 -print

Если же перед значением режима введен знак "плюс", осуществляется поиск файлов, для которых установлен хотя бы один из указанных битов разрешений, при этом остальные биты игнорируются.

Поделиться с друзьями: