НАЗВА

find - шукати файли в ієрархії тек

ЗВІД

find [шлях...] [вираз]

ОПИС

Ця сторінка допомоги описує GNU версію find . find шукає в деревах тек, які починаються з кожної заданої назви шляху, обчислюючи даний вираз зліва направо, згідно з правилами пріоритету операцій (див. секцію ОПЕРАТОРИ), поки значення виразу не стане відомим (ліва частина хибна для операцій and, істинна для or), після чого find переходить до наступного файлу.

перший арґумент, що починається з '-', '(', ')', ',', або '!' береться за початок виразу; будь-які арґументи перед нього є шляхами пошуку, і будь-які арґументи після є рештою виразу. Якщо не вказано жодного шляху, береться поточна тека. Якщо не вказано вираз, береться вираз '-print'.

find вертає код завершення 0 якщо всі файли оброблено вдало, більший за 0 при помилках.

ВИРАЗИ

Вираз складається з опцій (що впливають на загальний хід виконання, а не обробку певного файлу, і завжди вертають істину), умов (на виході істинне чи хибне значення), та дій (що мають сторонній ефект і вертають істинне чи хибне значення), розділених операторами. Коли оператор пропущено вживається -and. Якщо немає дій крім -prune, виконується -print на всіх файлах, для яких вираз істинний.

ОПЦІЇ

Всі опції завжди вертають істину. Вони діють завжди, а не лише тоді, коли доходить їхня черга у виразі. Тому, для ясності, краще ставити їх на початку виразу.

-daystart Виміряти час (для -amin, -atime, -cmin, -ctime, -mmin, та -mtime) з початку цього дня, а не від 24 годин тому.
-depth Обробляти вміст кожної теки перед самою текою.
-follow Йти за символьними посиланнями. Неявно задає -noleaf.
-help, --help Вивести коротку допомогу з **find** та вийти.
-maxdepth _рівнень_ Спускатись не більше ніж на _рівень_ (невід'ємне ціле) тек нижче арґументів командного рядка. '-maxdepth 0' означає застосувати умови та дії лише до арґументів командного рядка.
-mindepth _рівень_ Не застосовувати умови та дії на рівнях менших за _рівень_ ( невід'ємне ціле). '-mindepth 1' вказує обробляти всі файли крім арґументів командного рядка.
-mount Не спускатись теками на інших файлових системах. Інша назва для -xdev, для сумісності з деякими версіями **find** .
-noleaf Не оптимізувати припускаючи, що тека містить підтек на 2 менше ніж кількість своїх жорстких посилань. Ця опція потрібна при пошуку у файлових системах, що не узгоджені зі стандартом посилань тек Unix, таких як файлові системи CD-ROM чи MS-DOS, або точки монтування томів AFS. Кожна тека на звичайній файловій системі Unix має принаймні 2 жорстких посилання: її назва та запис '.'. Додатково, її підтеки мають прив'язаний до неї запис '..'. Коли **find** перевіряє теку, після отримання статусу для підтек кількістю на 2 менше ніж кількість посилань теки він знає, що решта файлів у теці не є теками('листові (leaf)' файли в дереві тек). Якщо треба перевіряти лише назви файлів, немає потреби отримувати статус; це значно прискорює пошук.
-version, --version Вивести версію **find** та вийти.
-xdev Не спускатись теками на інших файлових системах.

УМОВИ

Числові арґументи можна задати так:

_+n_ для більше ніж _n_ ,
_-n_ для менше ніж _n_ ,
_n_ для точно _n_ .
-amin _n_ Востаннє доступ до файлу був _n_ хвилин тому.
-anewer _файл_ Доступ до файлу був пізніше ніж _файл_ був змінений. -follow впливає на -anewer лише якщо -follow передує -anewer у командному рядку.
-atime _n_ Останній раз доступ до файлу був _n_*24 годин тому.
-cmin _n_ Статус файлу востаннє змінено _n_ хвилин тому.
-cnewer _файл_ Статус файлу востаннє змінено пізніше ніж змінено _файл_. -follow впливає на -cnewer лише якщо -follow передує -cnewer у командному рядку.
-ctime _n_ Статус файлу востаннє змінено _n_*24 годин тому.
-empty файл пустий і є звичайним файлом чи текою.
-false Завжди хибна.
-fstype _тип_ Файл на файловій системі _тип_. Припустимі типи файлових систем різні у різних версіях Unix; Неповний перелік типів файлових систем, що приймаються на тій чи іншій версії Unix: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Вживайте -printf з вказівкою %F щоб побачити типи ваших файлових систем.
-gid _n_ числовий ідентифікатор (ID) групи файлу _n_.
-group _ім'я_групи_ Файл належить до групи _ім'я_групи_ (допускається числовий ідентифікатор (ID) групи).
-ilname _зразок_ Як -lname, але збіг не чутливий до реґістру.
-iname _зразок_ Як -name, але збіг не чутливий до реґістру. Наприклад, зразки 'fo*' та 'F??' узгоджуються з назвами файлів 'Foo', 'FOO', 'foo', 'fOo', тощо.
-inum _n_ Файл має число inode _n_.
-ipath _зразок_ Як -path, але збіг не чутливий до реґістру.
-iregex _зразок_ Як -regex, але збіг не чутливий до реґістру.
-links _n_ Файл має _n_ посилань.
-lname _зразок_ Файл має символьне посилання, назва якого відповідна зразку оболонки _зразок_. Метасимволи не розглядають '/' чи '.' окремо.
-mmin _n_ Дані файлу востаннє змінені _n_ хвилин тому.
-mtime _n_ Дані файлу востаннє змінені _n_*24 годин тому.
-name _зразок_ Основа назви файлу (шлях з вилученими теками) відповідає зразку оболонки _зразок_. Метасимволи ('*', '?', та '[]') не відповідають '.' на початку основи назви. Для пропуску теки та її файдів, вживайте -prune; дивіться приклад в описі -path.
-newer _файл_ файл змінено пізніше за _файл_. -follow впливає на -newer лише якщо -follow передує -newer у командному рядку.
-nouser Жоден користувач не узгоджений з числовим ідентифікатором (ID) користувача файлу.
-nogroup Жодна група не узгоджена числовим ідентифікатором (ID) групи файлу.
-path _зразок_ назва файлу відповідає зразку оболонки _зразок_. Метасимволи не розглядають '/' чи '.' окремо; отже, наприклад,
find . -path './sr*sc'
надрукує теку з назвою './src/misc' (якщо така існує). Для пропуску всього дерева тек, вживайте -prune замість перевірки кожного файлу в дереві. Наприклад, для пропуску теки 'src/emacs' та усіх файлів і тек у ній, і виводу назв усіх інших знайдених файлів, зробіть подібне:
find . -path './src/emacs' -prune -o -print
-perm _режим_ Біти дозволів файлу є точно _режим_ (вісімковий чи символьний). Символьні режими беруть за відправну точку режим 0 .
-perm -_режим_ Всі біти дозволу _режим_ встановлені для файлу.
-perm +_mode_ Будь-який біт дозволу _режим_ встановлений для файлу.
-regex _зразок_ назва файлу узгоджена з регулярним виразом _зразок_. Це збіг для всього шляху. Наприклад, для збігу з файлом './fubar3', придатні регулярні вирази '.*bar.' or '.*b.*3', але не 'b.*r3'.
-size _n_[bckw] файл бере _n_ одиниць місця. Одиниця є блоком у 512 байтів за замовчанням чи якщо 'b' йде за _n_, байтом, якщо 'c' йде за _n_, кілобайтом, якщо 'k' йде за _n_, словом з двох байтів, якщо `w' йде за _n_. Цей розмір не містить непрямі блоки, але лічить блоки у розріджених файлах, ніби вони дійсно виділені.
-true Завжди істина.
-type _c_ Файл типу _c_:
b блочний (буферований) особливий
c символьний (небуферований) особливий
d тека
p названий канал (FIFO)
f звичний файл
l символьне посилання
s сокет
D двері (Solaris)
-uid _n_ числовий ідентифікатор (ID) користувача файлу _n_.
-used _n_ Востаннє доступ до файлу був _n_ днів по останній зміні статусу.
-user _ім'я_ Файл належить користувачу _ім'я_ (допускається числовий ідентифікатор (ID) користувача).
-xtype _c_ Те саме, що -type поки файл не є символьним посиланням. Для символьних посилань: Якщо не вказано -follow, істина якщо файл є посиланням на файл типу _c_; якщо вказано -follow , істина якщо _c_ є 'l'. Іншими словами, для символьних посилань, -xtype перевіряє тип файлу, чого не робить -type.

ДІЇ

-exec _команда_ ; Виконати _команду_; Істина, якщо повернено стан 0. Всі наступні арґументи **find** є арґументами для команди, доки не зустрінеться арґумент, що складається з ';'. Рядок '{}' замінюється поточним ім'ям файлу, будь-де він трапляється в арґументах команди, не лише в арґументах, що містять лише його, як у деяких інших версіях **find** . Обидві ці конструкції може бути необхідним екранувати (символом '\') чи взяти у лапки для захисту від обробки оболонкою. Команда виконується у початковій теці.
-fls _файл_ Істина; як -ls але пише у _файл_ як -fprint.
-fprint _файл_ Істина; друк повної назви файлу у _файл_. Якщо _файл_ не існує при запуску **find**, він створюється; якщо існує, він очищується. Назви файлу "/dev/stdout" та "/dev/stderr" ; обробляються особливо, вони означають звичний вивід та звичний вивід для помилок, відповідно.
-fprint0 _файл_ Істина; як -print0 але пише у _файл_ як -fprint.
-fprintf _файл_ _формат_ Істина; як -printf але пише у _файл_ як -fprint.
-ok _команда_ ; Як -exec але спочатку питає користувача (зі звичного вводу); якщо відповідь не починається з 'y' чи 'Y', не запускає команду, і повертає хибність.
-print Істина; друк повної назви файлу у на звичний вивід, з наступним прогоном рядка.
-print0 Істина; друк повної назви файлу у на звичний вивід, з наступним нульовим символом. Це дозволяє приймати файли з символом нового рядка у назві, програмам, що обробляють вивід **find**.
-printf _формат_ Істина; друкує _формат_ на звичний вивід, обробляючи екранування '\' та директиви '%'. Ширина і точність поля може бути задана як у функції мови Сі 'printf'. На відміну від -print, -printf не додає символ прогону рядка в кінець рядка. Екранування та директиви наступні:
\a Гудок тривоги.
\b Повернення на одну позицію (backspace).
\c Одразу припинити друк формату і завершити (flush) вивід .
\f Form feed.
\n Новий рядок.
\r Повернення каретки.
\t Горизонтальна табуляція.
\v Вертикальна табуляція.
\\ Символ повернення ('\').
\NNN Символ з ASCII кодом NNN (вісімковим).

Символ '\' за яким будь-який інший символ сприймається як звичайний символ, і обидва друкуються.

%% Символ відсотка.
%a Час останнього доступу до файлу у форматі, який вертає функція мови Сі 'ctime'.
%A_k_ Час останнього доступу до файлу у форматі, заданому _k_, що є або '@' або директивою для функції мови Сі 'strftime'. Можливі значення _k_ перелічені далі; деякі з них наявні не на всіх системах, через відмінності у 'strftime' на різних системах.
@ секунди після 1 Січня 1970, 00:00 середнього часу за грінвічським меридіаном (GMT).

Поля часу:

   

H

година (00..23)

I

година (01..12)

k

година ( 0..23)

l

година ( 1..12)

M

хвилина (00..59)

p

AM (до полудня) чи PM (після полудня), вживаючи настройку локалі

r

час, 12-годинний (гг:хх:сс [AP]M)

S

секунда (00..61)

T

час, 24-годинний (гг:хх:сс)

X

представлення часу у локалі (Г:Х:С)

Z

часова зона (наприклад, EDT), чи нічого, коли часова зона невизначена

Поля дати:

a Скорочена назва дня тижня у локалі (Нед..Суб)
A Повна назва дня тижня у локалі, змінної довжини (Неділя..Субота)
b Скорочена назва місяця у локалі (Січ..Гру)
B Повна назва дня місяця у локалі, змінної довжини (Січень..Грудень)
c Дата й час у локалі (Суб Лис 04 12:02:33 EST 1989)
d день місяця (01..31)
D дата (мм/дд/рр)
h те саме, що b
j день року (001..366)
m місяць (01..12)
U номер тижня року, тижні починаються з неділі (00..53)
w день тижня (0..6)
W номер тижня року, тижні починаються з понеділка (00..53)
x представлення дати у локалі (мм/дд/рр)
y Останні дві цифри року (00..99)
Y рік (1970...)
%b розмір файлу у блоках 512 байтів (округлений вгору).
%c Час останньої зміни статусу файлу у форматі, який вертає функція мови Сі 'ctime'.
%C_k_ Час останньої зміни статусу файлу у форматі заданому _k_, яке те саме, що й для %A.
%d глибина файлу в дереві тек; 0 означає, що файл є арґументом командного рядка.
%f назва файлу з вилученими початковими теками (лише останній запис).
%F Тип файлової системи на якій файл міститься; Це значення можна вжити для -fstype.
%g Назва групи файлу, чи числовий ідентифікатор (ID), якщо група безіменна.
%G числовий ідентифікатор (ID) групи файлу.
%h Початкові теки назви файлу (все крім останнього запису).
%H Арґумент командого рядка, за яким знайдено файл.
%i число inode файлу (десяткове).
%k розмір файлу у блоках 1K (округлений вгору).
%l Об'єкти символьного посилання (порожній рядок, якщо файл не є символьним посиланням).
%m Біти дозволів файлу (вісімкові).
%n Число жорстких посилань до файлу.
%p Назва файлу.
%P Назва файлу з прибраним арґументом командого рядка, за яким знайдено файл.
%s Розмір файлу в байтах.
%t Час останньої зміни файлу у форматі, який вертає функція мови Сі 'ctime'.
%T_k_ Час останньої зміни файлу у форматі заданому _k_, яке те саме, що й для %A.
%u Назва користувача файлу, чи числовий ідентифікатор (ID), якщо користувач неназваний.
%U числовий ідентифікатор (ID) користувача файлу.

Символ '%', за яким йде будь-який інший символ пропускається (але цей інший символ друкується).

-prune Якщо не задано -depth, то істина; не спускатись поточною текою.
Якщо -depth не задано, то хибність; не має дії.
-ls Істина; вивести поточний файл у форматі 'ls -dils' на звичний вивід. Блоки рахуються по 1K, але, якщо задана змінна оточення POSIXLY_CORRECT, то по 512 байтів.

ОПЕРАТОРИ

Перелік у порядку зниження пріоритету:

( _вираз_ ) Задає пріоритет.
! _вираз_ Істина, якщо _вираз_ хибний.
-not _вираз_ Те саме, що ! _вираз_.
_вираз1 вираз2_ І (неявний); _вираз2_ не обчислюється, якщо _вираз1_ хибний.
_вираз1_ -a _вираз2_ Те саме, що _вираз1 вираз2_.
_вираз1_ -and _вираз2_ Те саме, що _вираз1 вираз2_.
_вираз1_ -o _вираз2_ Або; _вираз2_ не обчислюється, якщо _вираз1_ Істина.
_вираз1_ -or _вираз2_ Те саме, що _вираз1_ -o _вираз2_.
_вираз1_ , _вираз2_ Перелік; і _вираз1_, і _вираз2_ завжди обчислюються. Значення _вираз1_ губиться; значення переліку є значенням _вираз2_.

ДИВІТЬСЯ ТАКОЖ

?locate(1L), ?locatedb(5L), ?updatedb(1L), xargs(1L), Finding files (у Info, чи друкованій документації)