Э. Сивер, С. Спейнауэр, С. Фиггинс, Дж. П. Хекман - Linux cправочник - 3-е издание (1114666), страница 23
Текст из файла (страница 23)
Обычно применяется совместно с параметром —т.file-ffileОбработать файлы, имена которых обнаружены в файле(file).—L Следовать по символическим ссылкам. По умолчаниюэтого не происходит.—m fileИспользовать указанный файл в качестве «волшебного»вместо /usr/share/magic.-п Сбросить стандартный вывод после определения типафайла.—s Помимо обычных обрабатывать также файлы блочных исимвольных устройств.—V Вывести версию file.—7 Пытаться обработать сжатые файлы.file распознает многочисленные типы файлов.
Результатомявляется список, в каждой строке которого содержится имяфайла и краткая классификация, например:ascii textс program textc-shell commandsdataemptyiAPX 386 executabledirectory[ntjroff, tbl, or eqn input textshell commandssymbolic link to ../usr/etc/arpПримерПеречислить все файлы, которые могут быть похожи на исходные данные для trof f /nrof f:file * | grep rofffind [pathnames] [conditions]Мощнейший инструмент для отбора определенных группфайлов (см.
многочисленные примеры в конце описания).find выполняет обход дерева каталогов, начиная с pathname иfind146Глава 3. Команды Linuxfindотбирает файлы, удовлетворяющие перечисленным критериям (conditions). По умолчанию дерево каталогов начинается с текущего каталога. Наиболее полезные критерии идействия: print (автоматически включается по умолчанию,если не заданы никакие другие критерии), -name и —type(часто используются), —exec и -size (для опытных пользователей), —mtime и -user (для администраторов).Критерии отбора могут быть: сгруппированы путем заключения их в экранированные скобки \( \), инвертированы спомощью символа «!» (\! для интерпретатора С shell), заданы списком альтернатив (разделение с помощью —о) илиповторены (наложением дополнительных ограничений напоиск; повторение обычно используется только с критериями —name, —type, —perm).
Редактированием называется изменение содержимого файла, смена прав доступа или владельца и т. д. Следовательно, критерий —ctime охватываетбольше параметров, чем —atime или -mtime.Критерии и действия—atime +п | —п \ пНайти файлы, обращение к которым в последний раз производилось более чем п (+п) дней назад либо менее чем п(-п) дней назад, либо ровно п дней назад. Следует помнить, что работа find меняет время последнего обращениядля каталогов, указанных в командной строке.—ctime +п \ — п \ пНайти файлы, которые были изменены более чем п (+п)дней назад либо менее чем л (—п) дней назад, либо ровно пдней назад.
Изменением называется действие, приводящее к модификации записи для файла, например, изменение с помощью chmod.-depthСпускаться по дереву каталогов и обрабатывать сначалафайлы (и только потом содержащие их каталоги). Режим полезен, если файлы находятся в каталоге, запись вкоторый запрещена (например, может пригодиться присовместном использовании find и cpio).—exec command {} \;Выполнить команду command для всех файлов, отобранных find (при условии успешного завершения find, т. е.возврата 0). При выполнении command фигурные скобкизаменяются именем текущего файла. Параметр завершается экранированным символом точка с запятой «\;».Алфавитный перечень команд-followСледовать по символическим ссылкам, отмечая каталогикак обработанные (не применять совместно с —type 1).-group gnameНайти файлы, принадлежащие группе gname. gname может быть как именем, так и идентификатором группы.—inum nНайти файлы, для которых число единиц inode равно п.—links nНайти файлы, на которые существует посылок.—mount, -xdevИскать только файлы, находящиеся внутри файловойсистемы, в которой начат поиск.—mtime +n\—n nНайти файлы, которые в последний раз были модифицированы более чем п (+п) дней назад либо менее чем п (—п)дней назад, либо ровно п дней назад.
Под модификациейпонимается изменение содержимого файла.—name patternНайти файлы, имена которых соответствуют шаблону(pattern). При использовании специальных символов необходимо экранировать их кавычками или символом «\».—newer fileНайти файлы, содержимое которых изменялось позже,чем содержимое указанного файла (file); критерий схож с—mtime. —follow влияет на этот критерий, только еслиуказан в командной строке раньше него.—ok command { } \ ;Идентично —exec, но перед выполнением команды запрашивается подтверждение пользователя.—perm nnnНайти файлы, восьмеричное значение прав доступа которых (например, rwx) в точности совпадает с ппп (например, -rw—rw-r— соответствует значению 664).
Укажитезнак «минус», чтобы произвести поиск по шаблону длялюбых незаданных прав доступа (например, -perm -600отметит все файлы с правами доступа -rw—******, где *может принимать любое значение).147findГлава 3. Команды Linux148find-printОтображать абсолютные пути для всех найденных файлов и каталогов. Код возврата - true.-regex patternСходно с -path, но с использованием регулярных выражений в стиле grep вместо шаблонов командного интерпретатора, таких как в -name и -path.—size n[c]Найти файлы, состоящие из п блоков либо, если задан модификатор с, то из п символов.-type сНайти файлы типа с.
Возможные значения с: Ъ (специальный файл блочного устройства), с (специальный файлсимвольного устройства), d (каталог), р (конвейер илиименованный канал), 1 (символическая ссылка), s (сокет)или f (обычный файл).—user userНайти файлы, принадлежащие пользователю user (имяили идентификатор).—daystartОтсчитывать время от начала текущего дня.-maxdepth питНе спускаться по дереву каталогов более чем на питуровней.—mindepth питПроизводить обработку только на уровнях, расположенных ниже уровня пит.—noleafОбычно find полагает, что для каждого каталога существуют две жесткие ссылки, которые следует игнорировать (это ссылка на имя каталога и на «.»), т. е.
реальныхкаталогов на два меньше, чем жестких ссылок. Критерий -noleaf заставляет find обрабатывать все жесткиессылки без исключения, что бывает полезно на файловыхсистемах не-Unix систем (жесткая ссылка может на самом деле быть каталогом, который необходимо обработать). В системах Unix этот параметр только замедляетработу программы.Алфавитный перечень команд—amin +п\-п\пНайти файлы, обращение к которым в последний раз выполнялось более чем п (+п) минут назад либо менее чем п(—п) минут назад, либо ровно п минут назад.—anewer fileНайти файлы, обращение к которым производилось после последнего изменения содержимого файла f i l e , —followвлияет на этот критерий, только если указан в команднойстроке раньше него.—cmin +n\—n пНайти файлы, которые были изменены более чем п (+п)минут назад либо менее чем п (—п) минут назад, либо ровно п минут назад.—cnewer fileНайти файлы, которые изменялись позднее последнегоизменения содержимого файла f i l e , -follow влияет наэтот критерий, только если указан раньше него в командной строке.—emptyПродолжать работу, если файл пуст.
Критерий применимк обычным файлам и каталогам.-falseВернуть значение false для каждого найденного файла.-fstype typeОтмечать только файлы, расположенные в файловой системе типа type. Могут быть заданы следующие типы: minix, ext, ext2, xia, msdos, umsdos, vfat, proc, nfs, iso9660,hpfs, sysv, smb и ncpfs.—gid питНайти файлы, принадлежащие группе с идентификатором пит.-ilname patternНечувствительный к регистрам символов вариант — Iname.—iname patternНечувствительный к регистрам символов вариант -name,-ipath patternНечувствительный к регистрам символов вариант —path.149findГлава 3. Команды Linux150find—iregex. patternНечувствительный к регистрам символов вариант —regex.—Iname patternИскать символические ссылки на файлы, соответствующие шаблону pattern. Шаблон может включать специальные символы командного интерпретатора и не трактует«/» (слэш) и «.» (точку) специальным образом.—mmin +п \ — п \ пНайти файлы, содержимое которых редактировалось более чем п (+п) минут назад либо менее чем п (—п) минутназад, либо ровно п минут назад.—nouserИскать файлы с незарегистрированным в системе идентификатором пользователя.—nogroupИскать файлы с незарегистрированным в системе идентификатором группы.—path patternНайти файлы, имена которых соответствуют шаблону pattern.
Выполняется обработка имен относительно точки начала поиска, т. е. «/» (слэш) и «.» (точка) не трактуютсяспециальным образом.ПримерыПеречислить все файлы (и подкаталоги) из домашнего каталога:find $HOME -printПеречислить все файлы с именем chapter 1 из каталога /work:find /work -name chapterl -printПеречислить все файлы, начинающиеся с memo, владельцемкоторых является пользователь апп:find /work -name 'memo*' -user ann -printИскать (начиная с корневого каталога файловой системы)каталоги, содержащие страницы руководств (manpages):find / -type d -name 'man*' -printНайти в текущем каталоге имена файлов, не начинающиесяс прописной буквы, и послать их на принтер:Алфавитный перечень командfind .