пятница, 14 октября 2016 г.

Основы Linux: find

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

-name задаем имя файла который ищем (с учетом регистра).
Ищем файл hosts в папке /etc:
sysadmin@localhost:~$ find /etc -name hosts                           
find: `/etc/dhcp': Permission denied                          
/etc/hosts
Если у пользователя недостаточно прав на чтение папки, будет выведена ошибка. чтобы не засорять вывод результата поиска  на экран мы можем перенаправить STDERR в файл (если нам нужна эта информация):
sysadmin@localhost:~$ find /etc -name hosts 2> errors.txt           
/etc/hosts 
/etc/avahi.hosts 
Если информация по ошибкам поиска нам не нужна, можно перенаправить вывод в null (т.е. выкинуть):
sysadmin@localhost:~$ find /etc -name hosts 2> /dev/null             
/etc/hosts
/etc/avahi/hosts

-ls позволяет добавить в выдачу подробную информацию по найденным файлам в стиле утилиты ls.
sysadmin@localhost:~$ find /etc -name hosts -ls 2> /dev/null
    41   4 -rw-r--r--   1 root     root      158 Jan 12 2010 /etc/hosts
  6549   4 -rw-r--r--   1 root     root      1130 Jul 19 2011 /etc/avahi/hosts
Первые два столбца указывают на inode number файла и номера блоков в которых он хранится.

-size позволяет указать точный размер файла который ищем, или же больше(+)/меньше(-). Для указания размера можно использовать Байты (c), килобайты (k), мегабайты (M), гигабайты (G).
Ищем файл размером 10 байт:
sysadmin@localhost:~$ find /etc -size 10c -ls 2>/dev/null   
   432    4 -rw-r--r--   1 root     root           10 Jan 28  2015 /etc/adjtime
Ищем файл размером более 100 мегабайт:
sysadmin@localhost:~$ find /usr -size +100M -ls 2> /dev/null
574683 104652 -rw-r--r--   1 root      root      107158256 Aug  7 11:06 /usr/share/icons/oxygen/icon-theme.cache

-maxdepth n ищем файлы на указанной глубине субдиректорий. 
-group groupname ищем файлы принадлежащие указанной группе.
-iname filename ищем по имени без учета регистра.
-mmin n ищем файлы измененные n минут назад.
-type type ищем файлы указанного типа (f - файл, d - папка).
-user username ищем файлы принадлежащие указанному пользователю.

Объединение нескольких опций в поиске действует как инюнкция (все опции должны совпасть).
Ищем только файлы в папке /etc размером 10 байт.
sysadmin@localhost:~$ find /etc -size 10c -type f -ls 2>/dev/null     
432    4 -rw-r--r--   1 root     root           10 Jan 28  2015 /etc/adjtime
73468    4 -rw-r--r--   1 root     root           10 Nov 16 20:42 /etc/hostname

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.