This page is hosted for free by zzz.com.ua, if you are owner of this page, you can remove this message and gain access to many additional features by upgrading your hosting to PRO or VIP for just 32.50 UAH.

Linux - Командная строка

Не работает? Начинай читать инструкцию.

Find - поиск файлов в Linux

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

Предлагаю ознакомиться с предложениями моих партнёров

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

Основные опции команды find, которые вы сможете применить в своей работе.

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

find путь -опции

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

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

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

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

Что до опций, то тут гораздо больший список, с которым крайне необходимо внимательно ознакомиться.

Итак, основные опции команды find:

  • -name  -  поиск файлов по имени, используя приведенный шаблон;
  • -user -  поиск файлов, принадлежащих указанному пользователю;
  • -group  -  поиск файлов, принадлежащих указанной группе;
  • -perm  -  поиск файлов с указанным режимом доступа;
  • -type -  поиск файлов определенного типа. Типов тоже достаточно:
  • b  - специальный блочный файл;
  • d  - каталог;
  • c  - специальный символьный файл;
  • f   - обычный файл;
  • l   - символическая ссылка;
  • p  - именованный канал;
  • s  - сокет.

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

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

Примеры применения команды 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

Предлагаю ознакомиться с предложениями моих партнёров