IT-Service - Команда find в UNIX
Среда, 26 Сентябрь 2012 07:55

Команда find в UNIX

Автор 
Оцените материал
(1 Голосовать)

Несомненно, при работе с Linux, иногда возникает необходимость поиска файлов с определенными характеристиками. Этими характеристиками могут быть размер или тип файла, права доступа и другое.

Наличие в Linux команды find, во многом помогает справиться с поиском файлов по различным критериям.

Сегодня мы разберем поиск файлов в Linux и приведем основные опции команды find, которые вы сможете применить в своей работе.

Формат команды find:

 

find путь -опции

где  путь – это каталог, в котором произвести поиск. В качестве пути можно указывать следующие значения:

.    – поиск в текущем каталоге;

/   – поиск от корневого каталога;

~  – поиск в домашнем каталоге.

Что до опций, то тут гораздо бОльший список, с которым крайне необходимо внимательно ознакомиться (это в будущем очень поможет!). Итак, основные опции команды find:

-name         -  поиск файлов по имени, используя приведенный шаблон;

-user           -  поиск файлов, принадлежащих указанному пользователю;

-group        -  поиск файлов, принадлежащих указанной группе;

-perm         -  поиск файлов с указанным режимом доступа;

-type          -  поиск файлов определенного типа. Типов тоже достаточно:

  • b  – специальный блочный файл;
  • d  – каталог;
  • c  – специальный символьный файл;
  • f   – обычный файл;
  • l   – символическая ссылка;
  • p  – именованный канал;
  • s  – сокет.

-size  n       -  поиск файлов с размером n единиц;

-mtime  -n +n   – поиск файлов, содержание которых изменялось менее чем (-) или более чем (+) дней назад.

[ad#af_articles_lizard]

Рассмотрим некоторые примеры применения команды find:

Наиболее часто применяемой опцией является опция -name, которая производит поиск файлов по имени.

Примеры с опцией -name:

 $ find /mnt/usb -name  “*.mp3″ -print

произведет поиск всех файлов (об этом свидетельствует знак *), имеющих расширение .mp3 на USB-устройстве, смонтированном в каталог /mnt/usb.

команда

find ~ -name “test*” -print

выведет на экран список файлов домашнего каталога, начинающихся на test.

Если вам надо найти файлы, начинающиеся с определенных букв (к примеру, от a до j),  то здесь будет удобно применить регулярные выражения, которые крайне удобны в работе:

find  / -name “[a-j]*” -print

Вышеуказанная команда позволит отыскать все файлы в системе, начинающиеся с букв от a до j.

Поиск файлов с определенными режимами доступа

Если потребуется найти файлы, имеющие определенные режимы доступа, вам поможет опция -perm, которая легко в этом поможет.

К примеру, выполним поиск файлов с режимом доступа 775  (владелец и группа имеют полные права и ограничение на запись имеют остальные пользователи), находящихся в текущем каталоге :

find .  -perm 775 -print

Выполняя поиск при помощи find с опцией -perm можно использовать и другой способ – можно перед значением режима поставить дефис и тогда будет произведен поиск файлов, для которых установлены все указанные биты разрешений. Причем, остальные биты в этом случае игнорируются.

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

find . -perm -070 -print

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

Поиск файлов определенного пользователя или группы

Поиск файлов какого-либо определенного пользователя крайне прост в своей реализации. Для этого достаточно выполнить команду:

find / -user admin -print

Вышеуказанная команда произведет поиск файлов в системе, принадлежащих пользователю admin.

Для того, чтобы найти файлы, принадлежащие определенной группе (к примеру managers), выполним команду:

$ find / -group managers -print

Для поиска файлов несуществующих пользователей или групп можно воспользоваться опциями -nouser  и -nogroup:

find / -nouser -print

и

find / -nogroup -print

Поиск файлов определенного типа

Одной из удобных возможностей команды find, является возможность поиска файлов определенного типа. Рассмотрим варианты использования опции -type:

Поиск символических ссылок в каталоге /etc:

find /etc -type l -print

Вывод на экран списка каталогов, присутствующих в каталоге /mnt/raid

find /mnt/raid -type d -print

Поиск файлов определенного размера

Опция -size позволяет произвести поиск файлов определенного размера и имеет следующий вид при выполнении:

find . -size 2000k -print

Вышеуказанная команда отыщет и отобразит на экране файлы размером 2 мегабайта, находящийся в текущем каталоге. Если, к примеру,  необходимо найти файлы размером менее 500 килобайт, то вид команды будет следующий:

find . -size -500k -print

Если нужно найти файлы размером более 600 мегабайт, то применим команду:

find / -size +600M -print

Поиск файлов с использованием опции -mtime

Опция -mtime позволит вам найти файлы, изменявшиеся в какой-то срок времени.

К примеру, у нас встала задача поиска файлов, находящихся в каталоге /mnt/raid/upload , и изменявшихся за последние 5 дней. В этом нам поможет команда:

find /mnt/raid/upload -mtime +5 -print

Если нам необходимо обратное, к примеру, отыскать файлы, которые не изменялись неделю, применим команду:

find /mnt/raid/upload  -7 -print

Команда find является крайне удобным инструментом для поиска файлов и может использоваться также и для поиска файлов на дисках NFS (сетевых файловых системах), но в этом случае необходимо учесть, что времени на поиск чего-либо на NFS уйдет гораздо больше, чем на локальных дисках.

Прочитано 4245 раз Последнее изменение Вторник, 02 Октябрь 2012 11:09
Авторизуйтесь, чтобы получить возможность оставлять комментарии