Поиск файлов в Linux или Изучаем команду find | ||
Разное > Консоль Несомненно, при работе с Linux, иногда возникает необходимость поиска файлов с определенными характеристиками. Этими характеристиками могут быть размер или тип файла, права доступа и другое. Наличие в Linux команды find, во многом помогает справиться с поиском файлов по различным критериям. Сегодня мы разберем поиск файлов в Linux и приведем основные опции команды find, которые вы сможете применить в своей работе.
Формат команды find: find путь -опции где путь – это каталог, в котором произвести поиск. В качестве пути можно указывать следующие значения: . – поиск в текущем каталоге; / – поиск от корневого каталога; ~ – поиск в домашнем каталоге. Что до опций, то тут гораздо бОльший список, с которым крайне необходимо внимательно ознакомиться (это в будущем очень поможет!). Итак, основные опции команды find: -name - поиск файлов по имени, используя приведенный шаблон; -user - поиск файлов, принадлежащих указанному пользователю; -group - поиск файлов, принадлежащих указанной группе; -perm - поиск файлов с указанным режимом доступа; -type - поиск файлов определенного типа. Типов тоже достаточно:
-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 (сетевых файловых системах), но в этом случае необходимо учесть, что времени на поиск чего-либо на NFS уйдет гораздо больше, чем на локальных дисках. В этой статье мы рассмотрели лишь основные опции команды find, которые помогут вам в вашей работе. Используйте то, что удобно и не переживайте по пустякам! Источник: |
||
Комментарии | ||