MyTetra Share
Делитесь знаниями!
Поиск файлов
Время создания: 13.11.2012 11:04
Раздел: linux
Запись: lesnik757/mytetra/master/base/13527830801ecksgfgo4/text.html на raw.githubusercontent.com

Поиск файлов в Linux или Изучаем команду find.

26 МАРТА 2010 BY LIZARD НАПИСАТЬ КОММЕНТАРИЙ


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

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

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

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

find путь -опции

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

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

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

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

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

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

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

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

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

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

  • -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 уйдет гораздо больше, чем на локальных дисках.

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования