Provided by: manpages-uk_4.15.0-9_all bug

НАЗВА

       find — пошук файлів в ієрархії каталогів

КОРОТКИЙ ОПИС

       find [-H] [-L] [-P] [-D параметри_діагностики] [-Oрівень] [початкова_точка...] [вираз]

ОПИС

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

       Якщо ви користуєтеся find  у  середовищі,  де  важливою  є  безпека  (наприклад,  якщо  ви
       користуєтеся  програмою  для  пошуку  у  каталогах,  які  є придатними до запису для інших
       користувачів), вам слід прочитати главу «Міркування безпеки» у документації  з  findutils,
       яка  має  назву Finding Files і постачається з findutils. У тому документі наведено багато
       подробиць та обговорення питань, які не  висвітлено  на  цій  сторінці  підручника,  тому,
       можливо, він стане для вас кориснішим джерелом інформації.

ПАРАМЕТРИ

       Параметри  -H,  -L  і -P керують обробкою символічних посилань. Аргументи командного рядка
       після цих параметрів вважаються назвами файлів та каталогів, які слід використати,  аж  до
       першого  аргументу,  запис якого починається з «-», або аргументу «(» чи «!». Цей аргумент
       та усі наступні аргументи вважатимуться виразами, які визначають,  що  саме  слід  знайти.
       Якщо  не  вказано  шлях,  буде  використано поточний каталог. Якщо не вказано виразу, буде
       використано вираз -print (втім, ймовірно, вам все одно варто  скористатися  замість  нього
       -print0).

       На  цій  сторінці  підручника  описано  «параметри» у списку виразів. Ці параметри керують
       поведінкою find, але їх вказують одразу після останнього запису шляху.  П'ять  «справжніх»
       параметрів  -H,  -L, -P, -D і -O слід вказувати перед першим записом шляху, якщо у цьому є
       потреба. Теоретично, можна скористатися  подвійним  дефісом  --,  щоб  вказати,  що  решта
       аргументів  не  є  параметрами,  але,  насправді,  це  не працює через спосіб, у який find
       визначає кінець аргументів після шляху: програма  робить  це  читанням,  аж  до  аргументу
       виразу (який також починається з «-»). Тепер, якщо аргумент шляху починається із «-», find
       вважатиме його аргументом виразу. Отже, щоб забезпечити врахування усіх початкових  точок,
       і, особливо, щоб запобігти розгортанню взірців із символами-замінниками викликом командної
       оболонки із помилковою обробкою їх як аргументів виразу, загалом безпечніше  додати  перед
       символами замінниками або сумнівними шляхами із «./» або скористатися абсолютними шляхами,
       що починаються з «/». Крім того, загалом безпечніше, хоча  це  і  шкодить  універсальності
       коду,  скористатися параметром GNU -files0-from, щоб передавати довільні початкові точки у
       find.

       -P     Ніколи не переходити за символічними посиланнями. Це типова  поведінка.  Коли  find
              інспектує   та  виводить  дані  щодо  файлів,  і  файл  є  символічним  посиланням,
              використані дані стосуватимуться властивостей самого символічного посилання.

       -L     Переходити за символічними посиланнями. При вивченні find відомостей щодо файлів  і
              виведенні  їх, відомості буде взято з властивостей файла, на який вказує посилання,
              а не з властивостей самого посилання  (якщо  це  коректне  посилання  і  find  може
              інспектувати  файл, на який вказує посилання). Використання цього параметра неявним
              чином встановлює  -noleaf.  Якщо  ви  далі  скористаєтеся  параметром  -P,  -noleaf
              продовжить  діяти.  Якщо  діє -L, і find виявить символічне посилання на підкаталог
              під час пошуку, буде виконано  пошук  у  підкаталозі,  на  який  вказує  символічне
              посилання.

              Якщо  вказано  параметр -L, ключ -type завжди застосовуватиметься до типу файла, на
              який посилається символічне посилання, а не до самого  посилання  (якщо  символічне
              посилання  є  коректним).  Дії,  які можуть спричинити втрату чинності символічними
              посиланнями під  час  роботи  find  (наприклад,  -delete),  спричиняють  некоректну
              поведінку  програми. Використання -L спричиняє те, що ключі -lname і -ilname завжди
              повертають логічну хибність.

       -H     Не  переходити  за  символічними  посиланнями,  окрім  періоду  обробки  аргументів
              командного  рядка. Коли find інспектує або виводить відомості щодо файлів, має бути
              використано відомості  щодо  властивостей  самого  символічного  посилання.  Єдиним
              виключенням  з  цього  правила  є  випадок,  коли  заданий  у  рядку команди файл є
              символічним посиланням і джерело посилання може бути  визначено.  У  цьому  випадку
              використані  відомості  буде  визначено за тим, на що посилається посилання (тобто,
              буде здійснено перехід  за  посиланням).  Відомості  щодо  самого  файла  посилання
              використовуються  як  резервні,  якщо  не вдасться виконати інспектування файла, на
              який посилається посилання. Якщо використано -H, і одним зі шляхів, які  вказано  у
              рядку  команди  є  символічне  посилання  на каталог, буде інспектовано вміст цього
              каталогу (хоча, звичайно, -maxdepth 0 може скасувати таке інспектування).

       Якщо вказано декілька параметрів з набору -H, -L і -P, кожен з них перевизначає  інші;  до
       уваги  буде  взято  лише  останній  з  цих  параметрів у рядку команди. Оскільки це типова
       поведінка, слід вважати, що чинним є параметр -P, якщо не вказано параметра -H або -L.

       GNU find часто читає статистичні дані щодо файлів під час  опрацювання  самого  командного
       рядка,  перед  тим,  як почався пошук. Ці параметри також впливають на обробку аргументів.
       Зокрема, є декілька перевірок, що порівнюють файли, вказані у рядку команди,  з  еталонним
       файлом.  В  кожному  випадку,  файл,  вказаний  у  командному  рядку, буде інспектовано зі
       збереженням деяких його властивостей. Якщо  вказаний  файл  є  символічним  посиланням,  і
       параметр -P є активним (або не було вказано ні -H, ні -L), інформація вжита для порівняння
       буде взята з символічного посилання. Інакше,  її  буде  взято  з  файла,  на  який  вказує
       посилання.  Якщо  find  не може перейти за посиланням (наприклад, оскільки немає достатньо
       прав або посилання вказує на файл, якого не існує)  буде  використано  властивості  самого
       посилання.

       Коли параметри -H або -L є активними, будь-які символічні посилання в аргументах до -newer
       будуть розіменовані, і позначки часу будуть взяті з файла, на який  вказує  посилання.  Те
       саме стосується -newerXY, -anewer і -cnewer.

       Параметр -follow дає результат, схожий на результат застосування параметра -L, але впливає
       там, де його  застосовано  (тобто,  якщо  не  вказано  -L,  а  -follow  вказано,  будь-які
       символічні  посилання,  які вказано після -follow у рядку команди буде розіменовано, а ті,
       що були до нього - ні).

       -D debugopts
              Друкувати діагностичну інформацію; це може  допомагати  діагностувати  проблеми  із
              тим,  чому  find  не  робить  те,  що  ви  хочете.  Параметри  у  списку параметрів
              діагностики має бути відокремлено пробілами. Сумісність параметрів діагностики  між
              випусками  findutils  не  гарантовано.  Повний  список параметрів діагностики можна
              побачити у виводі find -D help. Серед чинних параметрів діагностики такі:

              exec   Вивести діагностичні відомості щодо -exec, -execdir, -ok і -okdir

              opt    Виводить діагностичні відомості, пов'язані із оптимізацією ієрархії виразів;
                     див. параметр -O.

              rates  Виводить  резюме,  яке повідомляє, наскільки часто було успішно чи неуспішно
                     застосовано ключ.

              search Докладні повідомлення щодо навігації ієрархією каталогів.

              stat   Виводити  повідомлення  при  інспектуванні  файлів  за  допомогою  системних
                     викликів  stat  і  lstat.  Програма  find намагається мінімізувати кількість
                     таких викликів.

              tree   Вивести ієрархію виразів у її початковій та оптимізованій формах.

              all    Увімкнути усі інші діагностичні параметри (окрім help).

              help   Вивести пояснення щодо діагностичних параметрів.

       -Olevel
              Вмикає оптимізацію запиту. Програма find змінює порядок перевірок, щоб  пришвидшити
              виконання,  зберігаючи  загальний  результат;  тобто  ключ  з побічними ефектами не
              міняють місця  відносно  один  одного.  Оптимізація  виконується  в  кожному  рівні
              оптимізації, як вказано далі.

              0      Еквівалент рівня оптимізації 1.

              1      Це  типовий  рівень  оптимізації  й відповідає традиційній поведінці. Вирази
                     перевпорядковуються так, що перевірки, які засновано лише на  назвах  файлів
                     (наприклад, -name та -regex) буде виконано першими.

              2      Будь-які  перевірки  -type  і  -xtype  буде  виконано  після  перевірок, які
                     засновано на назвах файлів, але перед іншими перевірками, для яких  потрібні
                     дані  з  inode.  На  багатьох  сучасних  версіях Unix, тип файла, повернений
                     readdir(), а отже, ці ключі можна обчислити швидше, ніж ключі, для яких слід
                     спочатку  отримати  статистичні дані щодо файла. Якщо ви використовуєте ключ
                     -fstype ЩОСЬ і вказуєте файлову систему ЩОСЬ,  яка  є  невідомою  (тобто  її
                     немає  в  `/etc/mtab')  на  момент запуску find, цей ключ є еквівалентним до
                     -false.

              3      На цьому рівні оптимізації буде увімкнено повноцінний оптимізатор запитів на
                     основі  обчислювальної  вартості.  Порядок  перевірок  буде змінено так, щоб
                     першими  було  виконано  дешеві  (тобто  швидкі)  перевірки,  а   вартісніші
                     перевірки  було виконано пізніше, якщо це потрібно. У кожній смузі вартостей
                     ключі буде визначено раніше або пізніше на основі ймовірності того, що  вони
                     виявляться   відповідними.   Для   -o   ключі,   які  ймовірніше  виявляться
                     відповідними буде обчислено раніше, а для -a раніше  буде  обчислено  ключі,
                     які, ймовірно, виявляться невідповідними.

              У  засобі оптимізації на основі вартості реалізовано фіксований алгоритм визначення
              того, наскільки ймовірним є  встановлення  відповідності  у  заданій  перевірці.  У
              деяких  випадках  при  обчисленні  ймовірності  береться до уваги природа перевірки
              (наприклад, зроблено припущення, що  перевірку  -type f  буде  пройдено  з  більшою
              ймовірністю,  ніж  -type c).  Зараз  розробники  оцінюють,  чи  варто  лишати засіб
              оптимізації на основі вартості. Якщо він не збільшить швидкодію  find,  його  знову
              буде  прибрано.  І навпаки, оптимізації, які є надійними, стійкими та ефективними з
              часом може бути увімкнено на нижчих рівнях оптимізації. Втім, немає намірів змінити
              типову  поведінка  (тобто  рівень  оптимізації  1)  у послідовності випусків 4.3.x.
              Комплект тестів findutils виконує перевірку  find  на  усіх  рівнях  оптимізації  і
              забезпечує однакові результати для кожного з них.

ВИРАЗ

       Частина  рядка  команди  після  списку  початкових  точок  є  виразом. Це тип специфікації
       запитів, який описує, які файли є відповідними та  те,  що  слід  зробити  з  відповідними
       файлами. Вираз складається з такої послідовності елементів:

       Перевірки
              Перевірки  повертають  значення істинності або хибності, зазвичай, на основі певних
              властивостей інспектованого файла. Наприклад, перевірка  -empty  повертає  значення
              істинності, лише якщо поточний файл є порожнім.

       Дії    Дії   мають  побіжні  ефекти  (зокрема  виведення  якихось  даних  до  стандартного
              виведення) і повертають або істинність або хибність, залежно від того, чи вдало  їх
              було  виконано.  Наприклад,  дія  -print  виводить  до стандартного виведення назву
              поточного файла.

       Загальні параметри
              Загальні параметри впливають на роботу перевірок і дій,  які  вказано  у  будь-якій
              частині  рядка команди. Загальні параметри завжди повертають істинність. Наприклад,
              параметр -depth наказує find обходити файлову систему на одиничну глибину.

       Позиційні параметри
              Позиційні параметри впливають лише на перевірки або  дії,  які  вказано  у  команді
              після  них.  Позиційні  параметри завжди повертають істинність. Наприклад, параметр
              -regextype є позиційним, він визначає діалект  формальних  виразів  для  формальних
              виразів, які вказано у рядку команди після нього.

       Оператори
              Оператори  поєднують  між  собою інші елементи у виразі. Прикладами параметрів є -o
              (означає логічне АБО) та -a (означає логічне  І).  Там,  де  оператор  не  вказано,
              програма припускатиме -a.

       Дію  -print  буде  виконано  для  усіх  файлів,  для  яких  обчислення  усього  виразу дає
       істинність, якщо у ньому не міститься дії, окрім -prune або -quit.  Дії,  які  забороняють
       виконання  типової  дії  -print:  -delete,  -exec,  -execdir,  -ok, -okdir, -fls, -fprint,
       -fprintf, -ls, -print і -printf.

       Дія -delete також працює як параметр (оскільки вона неявним чином встановлює -depth).

   ПОЗИЦІЙНІ ПАРАМЕТРИ
       Позиційні параметри завжди повертають істинне значення. Вони  стосуються  лише  перевірок,
       які визначено за ними у рядку команди.

       -daystart
              Вимірювати  час  (для  -amin,  -atime,  -cmin,  -ctime, -mmin і -mtime) від початку
              поточного дня, а не від моменту  24  години  тому.  Цей  параметр  стосується  лише
              перевірок, які вказано за ним у рядку команди.

       -follow
              Застарілий;  користуйтеся  замість  нього  параметром  -L.  Розіменувати символічні
              посилання. Неявним чином встановлює  -noleaf.  Параметр  -follow  впливає  лише  на
              перевірки,  які буде вказано у рядку команди після нього. Якщо не вказано параметра
              -H або -L, позиція параметра -follow змінює поведінку ключа -newer;  усі  файли  зі
              списку-аргументу -newer буде розіменовано, якщо вони є символічними посиланнями. Те
              саме стосується параметрів -newerXY, -anewer і -cnewer. Так само, відповідність  за
              ключем  -type  завжди встановлюватиметься за типом файла, на який вказує символічне
              посилання, а не за самим посиланням. Використання -follow спричиняє  повернення  за
              ключами -lname і -ilname значення хибності за будь-яких умов.

       -regextype тип
              Змінює  синтаксис  формальних  виразів,  які  використовують  у перевірках -regex і
              -iregex, які вказано після нього у рядку команди. Щоб  переглянути  список  відомих
              типів,  скористайтеся  параметром  -regextype help. У документації до Texinfo (див.
              ДИВ. ТАКОЖ) описано значення і відмінності від різними типами формальних виразів.

       -warn, -nowarn
              Увімкнути або вимкнути  виведення  попереджень.  Ці  попередження  стосуються  лише
              використання  командного  рядка,  а  не  умов,  які може зустріти find при пошуку у
              каталогах. Типова поведінка відповідає варіанту -warn,  якщо  стандартним  джерелом
              вхідних  даних  є  термінал,  і  -nowarn  в усіх інших випадках. Якщо буде виведено
              попередження, яке пов'язано із використанням командного  рядка,  стан  виходу  find
              змінено  не  буде.  Якщо  встановлено значення змінної середовища POSIXLY_CORRECT і
              також використано -warn, не буде визначено, які попередження будуть активними, і чи
              будуть вони активними взагалі.

   ЗАГАЛЬНІ ПАРАМЕТРИ
       Загальні  параметри  завжди  повертають  істинність.  Загальні параметри працюють навіть у
       перевірках, які вказано у рядку команди перед ними.  Щоб  запобігти  конфліктам,  загальні
       параметри  слід  вказувати  у  рядку  команди  після списку початкових точок, одразу перед
       першою перевіркою, позиційним параметром або дією. Якщо ви вкажете загальний параметр десь
       в іншому місці, find виведе попередження про те, що такий порядок є конфліктним.

       Загальні параметри вказують у командному рядку після списку початкових точок, тому вони не
       належать до того самого типу параметрів, що і, наприклад, -L.

       -d     Синонім -depth, для сумісності із FreeBSD, NetBSD, MacOS X та OpenBSD.

       -depth Обробляти вміст кожного каталогу  до  самого  каталогу.  Використання  дії  -delete
              неявним чином встановлює -depth.

       -files0-from файл
              Прочитати  початкові  точки  з файла файл, замість отримання їх з рядка команди. На
              відміну від відомих обмежень передавання  початкових  точок,  як  аргументів  рядка
              команди,  а саме, обмеженнями на кількість назв файлів, та неусувну неоднозначність
              між назвами файлів і назвами параметрів, використання цього параметра  надає  змогу
              безпечно передавати find довільну кількість початкових точок.

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

              Аргумент файл є обов'язковим. Можна скористатися -files0-from - для читання  списку
              початкових  точок з потоку даних стандартного джерела вхідних даних і, наприклад, з
              каналу даних. У цьому випадку не можна використовувати дії -ok і  -okdir,  оскільки
              вони,  явним  чином, конфліктують із читанням даних зі стандартного джерела вхідних
              даних для отримання підтвердження від користувача.

              Початкові точки у  файлі  має  бути  відокремлено  символом  NUL  ASCII.  Не  можна
              використовувати  два послідовних символи NUL, тобто початкові точки із назвою файла
              нульової довжини. Поява таких  двох  послідовних  символів  призведе  до  виведення
              діагностичного повідомлення про помилку із ненульовим станом виходу з програми.

              Якщо  заданий  файл  є порожнім, find не оброблятиме жодних початкових точок і тому
              завершить  роботу  негайно  після  обробки  аргументів.  У  цьому  відмінність  від
              стандартного  виклику, коли find припускатиме початкову точку у поточному каталозі,
              якщо не буде задано аргументу шляху.

              В інших аспектах, обробка початкових точок є звичайною. Наприклад, find  рекурсивно
              обходитиме  підкаталоги,  якщо це не заборонено явним чином. Щоб програма обробляла
              лише початкові точки, слід додатково передати їй параметр -maxdepth 0.

              Подальші нотатки: якщо файл вказано у файлі вхідних даних декілька  разів,  те,  чи
              буде його відвідано декілька разів, не визначено. Якщо до файла під час роботи find
              буде внесено зміни, результат також залишиться  невизначеним.  Нарешті,  позиція  в
              іменованому  файлі  на  момент виходу з find за допомогою -quit або в інший спосіб,
              також є невизначеною. Під «невизначеністю» ми тут розуміємо  те,  що  команда  може
              спрацювати,  може  не  спрацювати  або може спрацювати не так, як ви сподівалися, а
              поведінка може бути різною на різних платформах або у різних випусках findutils.

       -help, --help
              Вивести резюме щодо використання командного рядка у find і вийти.

       -ignore_readdir_race
              Зазвичай, find видаватиме повідомлення  про  помилку,  якщо  не  вдасться  отримати
              статистичні  дані  щодо файла. Якщо ви передасте програмі цей параметр, і файл буде
              вилучено між моментом, коли find прочитає назву файла з каталогу, і моментом,  коли
              програма  спробує  отримати  статистичні  дані щодо файла, повідомлення про помилку
              видано не буде. Це також стосується файлів або каталогів, чиї назви задано у  рядку
              команди.  Цей параметр набуває чинності у момент читання рядка команди, тобто ви не
              зможете виконати пошук у одній частині файлової системи із увімкненим параметром, а
              в  іншій  частині  — з вимкненим (якщо ви хочете так зробити, вам доведеться видати
              дві команди find: одну із цим параметром, а другу — без нього).

              Крім  того,  find  із  параметром  -ignore_readdir_race  ігноруватиме  помилки  дії
              -delete,  якщо  файл  зник  з  моменту  читання батьківського каталогу: програма не
              видаватиме ніякої діагностики щодо помилок, а кодом повернення для дії -delete буде
              істинність.

       -maxdepth рівні
              Спускатися  не  більше, ніж на рівні (невід'ємне ціле число) рівнів у каталогах під
              початковими точками. Якщо вказано -maxdepth 0, перевірки  і  дії  буде  застосовано
              лише до самих початкових точок.

       -mindepth рівні
              Не  застосовувати  жодних  перевірок  або  дій  на  рівнях,  які є меншими за рівні
              (невід'ємне ціле число). Якщо використано -mindepth 1, буде  оброблено  усі  файли,
              окрім початкових точок.

       -mount Не спускатися у каталоги на інших файлових системах. Альтернативна назва -xdev, для
              сумісності із деякими іншими версіями find.

       -noignore_readdir_race
              Вимикає ефект -ignore_readdir_race.

       -noleaf
              Не оптимізувати припущенням, що у каталогах міститься на 2 підкаталоги менше, ніж у
              лічильнику їхнього жорсткого посилання. Цей параметр потрібен при пошуку у файлових
              системах, де не виконується  угода  щодо  посилань  на  каталоги  у  Unix,  зокрема
              файлових  системах CD-ROM чи MS-DOS або точок монтування томів AFS. Кожен каталог у
              звичайній файловій системі Unix має принаймні 2 жорстких посилання:  свою  назву  і
              свій  запис «.». Крім того, кожен з його підкаталогів (якщо такі є) має запис «..»,
              який пов'язано із  цим  каталогом.  Коли  find  інспектує  каталог,  після  обробки
              кількості  підкаталогів,  яка на 2 менша за кількість посилань на каталог, програма
              вже знає, що решта записів у каталозі не є каталогами (файлами-«листками» у  дереві
              каталогів).  Якщо  інспектуванню  підлягають  лише  назви  файлів,  немає потреби у
              отриманні подальших статистичних даних щодо них, і це значно прискорює пошук.

       -version, --version
              Вивести номер версії find і завершити роботу.

       -xdev  Не спускатися у каталоги на інших файлових системах.

   ПЕРЕВІРКИ
       У деяких перевірках, зокрема -newerXY і -samefile, можливим є порівняння між інспектованим
       файлом  та  деяким  еталонним  файлом,  який  вказано у рядку команди. При виконанні таких
       перевірок інтерпретація еталонного  файла  виконується  за  параметрами  -H,  -L  і  -P  і
       будь-яким   значенням   попереднього  параметра  -follow,  але  обробка  еталонного  файла
       виконується лише один раз, під час обробки рядка команди.  Якщо  інспектування  еталонного
       файла  неможливе (наприклад, не вдалося виконати системний виклик stat(2) для нього), буде
       видано повідомлення про помилку, а find завершить роботу із ненульовим станом виходу.

       У перевірках може бути вказано числовий аргумент n (наприклад, -amin, -mtime, -gid, -inum,
       -links, -size, -uid і -used) як у

       +n     для значень, більших за n,

       -n     для значень, менших за n,

       n      для значень, які точно дорівнюють n.

       Підтримувані перевірки:

       -amin n
              Доступ до файла було здійснено менше, більше або точно n хвилин тому.

       -anewer еталон
              Час останнього доступу до поточного файла є майбутнім щодо часу останнього внесення
              змін до даних файла еталон. Якщо еталон є символічним посиланням і вказано параметр
              -H або параметр -L, буде використано час останнього внесення змін до файла, на який
              вказує посилання.

       -atime n
              Останній доступ до файла відбувався менше, більше або точно n*24  годин  тому.  При
              визначенні  find кількості періодів у 24 години для останнього доступу до файла усі
              дробові частини буде проігноровано, тому, щоб бути відповідним критерію  -atime +1,
              файл має бути таким, доступ до якого було здійснено принаймні два дні тому.

       -cmin n
              Стан файла було востаннє змінено менше, більше або точно n хвилин тому.

       -cnewer еталон
              Час останньої зміни стану поточного файла є майбутнім щодо часу останнього внесення
              змін до даних файла еталон. Якщо еталон є символічним посиланням і вказано параметр
              -H або параметр -L, буде використано час останнього внесення змін до файла, на який
              вказує посилання.

       -ctime n
              Стан файла було востаннє змінено менше, більше або  точно  n*24  годин  тому.  Див.
              коментарі до -atime, щоб розібратися у тому, як округлення впливає на інтерпретацію
              часу зміни стану файла.

       -empty Файл є порожнім і є або звичайним файлом, або каталогом.

       -executable
              Встановлює відповідність файлам, які є виконуваними, та каталогам, які є придатними
              до  пошуку  (у  сенсі визначення назв файлів), для поточного користувача. При цьому
              буде враховано списки керування доступом (ACL) та інші речі, пов'язані  із  правами
              доступу,   які  буде  проігноровано  під  час  перевірки  -perm.  У  цій  перевірці
              використано системний виклик access(2), тому її може бути дезінформовано  серверами
              NFS,  які  виконують  прив'язування  UID (або root-ущільнення), оскільки у багатьох
              системах access(2) реалізовано на  боці  ядра  клієнта,  а  отже,  вони  не  можуть
              використати дані прив'язки до UID, які зберігаються на сервері. Оскільки результати
              цієї перевірки  засновано  лише  на  системному  виклику  access(2),  немає  ніяких
              гарантій того, що файл, який пройде перевірку, насправді може бути виконано.

       -false Завжди хибність.

       -fstype тип
              Файл  зберігається  у  файловій системі типу тип. Перелік коректних файлових систем
              для перевірки є різним для різних версій Unix; ось неповний список  типів  файлових
              систем,  які  може  бути  прийнято у тих чи інших версіях Unix: ufs, 4.2, 4.3, nfs,
              tmp, mfs, S51K,  S52K.  Ви  можете  скористатися  -printf  з  інструкцією  %F,  щоб
              переглянути список типів ваших файлових систем.

       -gid n Числове значення ідентифікатора групи файла є меншим, більшим або рівним n.

       -group назва
              Файл належить групі назва (можна вказати цифровий ідентифікатор групи).

       -ilname взірець
              Те саме, що і -lname, але відповідність встановлюватиметься без врахування регістру
              символів. Якщо вказано параметр -L або  -follow,  ця  перевірка  повертає  значення
              хибності, якщо символічне посилання є чинним.

       -iname взірець
              Подібний  до  -name,  але  відповідність  буде  встановлено без врахування регістру
              символів. Наприклад, взірцям «fo*» та «F??» відповідають назви файлів «Foo», «FOO»,
              «foo», «fOo» тощо. Крім того, взірцю «*foo*» відповідає файл із назвою «.foobar».

       -inum n
              Файл  має  номер  inode,  який  є  меншим, більшим або рівним n. Зазвичай, простіше
              скористатися перевіркою -samefile.

       -ipath взірець
              Подібний до -path, але відповідність встановлюється без врахування регістру.

       -iregex взірець
              Подібний до -regex, але відповідність встановлюється без врахування регістру.

       -iwholename взірець
              Див. -ipath. Ця альтернатива є менш розповсюдженою за -ipath.

       -links n
              Кількість жорстких посилань на файл є меншою, більшою або рівною n.

       -lname взірець
              Файл є символічним посиланням, вміст якого  відповідає  взірцю  командної  оболонки
              взірець.  У  метасимволах  не  передбачено  спеціальної  обробки  «/» або «.». Якщо
              вказано параметр -L або параметр -follow, ця перевірка поверне  значення  хибності,
              якщо символічне посилання є чинним.

       -mmin n
              Зміни до файла було внесено менше, більше або точно n хвилин тому.

       -mtime n
              Дані  файла  було  востаннє  змінено  менше, більше або точно n*24 годин тому. Див.
              коментарі до -atime, щоб розібратися у тому, як округлення впливає на інтерпретацію
              часу внесення змін до файла.

       -name взірець
              Основа  назви  файла (шлях, з якого вилучено початкові записи каталогів) відповідає
              взірцю командної оболонки взірець. Оскільки початкові  записи  каталогів  вилучено,
              назви  файлів,  які  програма розглядатиме для встановлення відповідності із -name,
              ніколи не включатимуть символу похилої риски, отже  «-name  a/b»  не  відповідатиму
              жодному  файлу (ймовірно, доведеться користуватися -path для таких відповідностей).
              Якщо ви спробуєте шукати таку відповідність, програма видасть попередження, якщо не
              встановлено  значення  змінної середовища POSIXLY_CORRECT. Метасимволи («*», «?» та
              «[]»)  відповідають  «.»  на  початку  базової  назви  (цю  зміну   впроваджено   у
              findutils-4.2.2;   див.   розділ  ВІДПОВІДНІСТЬ  СТАНДАРТАМ  нижче).  Щоб  програма
              проігнорувала каталог і усі файли у ньому, скористайтеся -prune, замість  перевірки
              усіх файлів в ієрархії; див. приклад в описі цієї дії. Фігурні дужки не розпізнають
              як особливі, хоча у деяких командних оболонках, зокрема Bash, фігурні  дужки  мають
              особливе  призначення  у  взірцях  оболонки. Встановлення відповідності назв файлів
              буде виконано з використанням бібліотечною функції fnmatch(3).  Не  забудьте  взяти
              взірець у лапки, щоб запобігти його розгортанню командною оболонкою.

       -newer еталон
              Час  останнього  внесення  змін  до  даних  поточного  файла  є майбутнім щодо часу
              останнього  внесення  змін  до  даних  файла  еталон.  Якщо  еталон  є  символічним
              посиланням  і  вказано параметр -H або параметр -L, буде використано час останнього
              внесення змін до файла, на який вказує посилання.

       -newerXY еталон
              Вважається пройденою, якщо часова позначка X  інспектованого  файла  є  новішою  за
              часову позначку Y файла еталон. Літерами X і Y можуть бути будь-які з таких літер:

              a   Час доступу до файла еталон
              B   Час створення файла еталон
              c   Час зміни стану inode файл еталон
              m   Час внесення змін до файла еталон
              t   еталон буде оброблено безпосередньо як час

              Деякі  комбінації  є  некоректними.  Наприклад,  некоректно  використовувати  для X
              значення t. Деякі комбінації реалізовано не в усіх системах. Наприклад, не  в  усіх
              системах  передбачено  підтримку  B.  Якщо  вказано  некоректну  або непідтримувану
              комбінацію XY, програма повідомить про критичну  помилку.  Специфікації  часу  буде
              оброблено  за правилами аргументу параметра -d програми GNU date. Якщо ви спробуєте
              скористатися часом створення еталонного  файла,  а  час  створення  не  можна  буде
              визначити, програма повідомить про критичну помилку. Якщо ви вкажете перевірку, яка
              посилається на час створення інспектованих файлів, перевірку не буде  пройдено  для
              усіх файлів, час створення яких є невідомим.

       -nogroup
              Немає груп, які відповідають числовому ідентифікатору групи файла.

       -nouser
              Немає користувачів, які відповідають числовому ідентифікатору користувача файла.

       -path взірець
              Назва  файла  відповідає взірцю командної оболонки взірець. Без особливого значення
              для метасимволів «/» та «.». Отже, наприклад,
                  find . -path "./sr*sc"
              виведе запис для каталогу із назвою ./src/misc (якщо  такий  існує).  Щоб  програма
              проігнорувала   усе  дерево  каталогів,  скористайтеся  параметром  -prune  замість
              перевірки усіх файлів у дереві. Зауважте, що перевірку  відповідності  взірцю  буде
              застосовано  до  усієї  назви  файла, починаючи з однієї з початкових точок з рядка
              команди. Використання тут абсолютного шляху має сенс,  лише  якщо  початкову  точку
              також  вказано  як  абсолютний  шлях.  Це  означає, що така команда ніколи не дасть
              ніяких результатів:
                  find щось -path /десь/щось/мій_файл -print
              Find  порівнює  аргумент  -path  з  об'єднанням  назви  каталогу  і  базової  назви
              інспектованого  файла.  Оскільки об'єднання ніколи не завершується символом похилої
              риски, аргументи -path,  які  завершуватимуться  похилою  рискою,  не  відповідають
              жодному  файлу  (окрім,  можливо,  початкової  точки, яку вказано у рядку команди).
              Підтримку ключа -path також передбачено у find для HP-UX, вона є частиною стандарту
              POSIX 2008.

       -perm режим
              Біти  прав  доступу  до  файла  точно збігаються зі значенням режим (вісімковим або
              символьним). Оскільки потрібна точна відповідність.  якщо  ви  хочете  скористатися
              цією  формою  для символьних режимів, вам, може, доведеться вказати доволі складний
              рядок режиму. Наприклад, «-perm  g=w»  відповідає  лише  файлам,  які  мають  режим
              доступу  0020  (тобто  файлів, для яких встановлено лише право доступу на запис для
              групи). Ймовірніше, вам варто скористатися формами «/» або  «-»,  наприклад  «-perm
              -g=w»,  де  відповідність  буде  встановлено будь-якому файлу із правому доступу на
              запис для групи. Див. розділ ПРИКЛАДИ, де наведено показові приклади.

       -perm -режим
              Для  файла  встановлено  усі  біти  прав  доступу  режим.   У   цій   формі   можна
              використовувати   символьні  режими,  і  це  саме  той  випадок,  коли  ними  варто
              користуватися. Вам слід вказати «u», «g»  або  «o»,  якщо  ви  хочете  скористатися
              символьним режимом. Див. розділ ПРИКЛАДИ, де наведено показові приклади.

       -perm /режим
              Для  файла  не  встановлено  жодного  з бітів прав доступу режим. У цій формі можна
              використовувати символьні режими. Вам слід вказати «u», «g» або «o», якщо ви хочете
              скористатися  символьним  режимом.  Див.  розділ  ПРИКЛАДИ,  де  наведено  показові
              приклади. Якщо не встановлено жодного з бітів з запису режим, цю  перевірку  пройде
              будь-який  файл  (ідея  полягає  у  тому,  щоб  зберегти сумісність із поведінкою у
              відповідь на  -perm -000).

       -perm +режим
              Підтримку  цього  параметра  припинено  (його  вважали  застарілим  з  2005  року).
              Скористайтеся замість ного -perm /режим.

       -readable
              Встановлює відповідність файлам, які придатні до читання для поточного користувача.
              Тут буде взято до уваги списки керування доступом (ACL)  та  інші  фактори  надання
              прав  доступу,  які  буде  проігноровано  під  час перевірки -perm. У цій перевірці
              використано системний виклик access(2), тому її може бути дезінформовано  серверами
              NFS,  які  виконують  прив'язування  UID (або root-ущільнення), оскільки у багатьох
              системах access(2) реалізовано на  боці  ядра  клієнта,  а  отже,  вони  не  можуть
              використати дані прив'язки до UID, які зберігаються на сервері.

       -regex взірець
              Встановлює  відповідність  назви файла формальному виразу взірець. Це відповідність
              за повним шляхом, а не пошук. Наприклад, щоб відповідним  було  визначено  файл  із
              назвою  ./fubar3,  можна скористатися формальним виразом «.*bar.» або «.*b.*3», але
              не «f.*r3». Типово, формальними виразами, які  розуміє  find,  є  формальні  вирази
              Emacs  (окрім  того, що «.» відповідає символу розриву рядка), але це можна змінити
              за допомогою параметра -regextype.

       -samefile назва
              Файл посилається на той  самий  inode,  що  і  назва.  Якщо  вказано  -L,  це  може
              стосуватися і символічних посилань.

       -size n[cwbkMG]
              Файл  використовує  менше, більше або точно n одиниць об'єму інформації на диску, з
              округленням вгору. Можна використовувати такі суфікси:

              `b'    для 512-байтових блоків (це  типовий  варіант,  що  не  використано  жодного
                     суфікса)

              `c'    для байтів

              `w'    для двобайтових слів

              `k'    для кібібайтів (КіБ, одиниць у 1024 байтів)

              `M'    для мебібайтів (МіБ, одиниць у 1024 * 1024 = 1048576 байтів)

              `G'    для гібібайтів (ГіБ, одиниць у 1024 * 1024 * 1024 = 1073741824 байтів)

              Розмір  є просто членом st_size структури stat, яку заповнює системний виклик lstat
              (або stat), із округленням вгору, як це показано вище.  Іншими  словами,  розмір  є
              сумісним  із  результатом, який дає ls -l. Слід пам'ятати, що специфікатори формату
              «%k» і «%b» -printf обробляють розріджені файли інакше. Суфікс «b» завжди  позначає
              512-байтові  блоки,  і  ніколи — 1024-байтові блоки, що відрізняється від поведінки
              -ls.

              Префікси + і - позначають «більше» і «менше», як звично; тобто точний  розмір  у  n
              одиниць  не  є  відповідним.  Пам'ятайте,  що  розмір  буде  округлено до наступної
              одиниці. Тому -size -1M не є тим самим,  що  і  -size -1048576c.  Першому  варіанту
              відповідатимуть  лише  порожні  файли,  а  другому — файли, розмір яких потрапляє у
              діапазон від 0 до 1048575 байтів.

       -true  Завжди істина.

       -type c
              Файл належить до типу c:

              b      блоковий (буферизований) спеціальний

              c      символьний (небуферизований) спеціальний

              d      каталог

              p      іменований канал даних (FIFO)

              f      звичайний файл

              l      символічна посилання; ніколи не повертає значення істинності,  якщо  вказано
                     параметр  -L  або параметр -follow, якщо символічне посилання є чинним. Якщо
                     вам потрбіні символічні посилання із вказаним -L, скористайтеся -xtype.

              s      сокет

              D      двері (Solaris)

              Щоб виконати пошук одразу декількох типів, ви можете  вказати  комбінований  список
              літер типів, які відокремлено комою «,» (розширення GNU).

       -uid n Числове значення ідентифікатора користувача файла є меншим, більшим або рівним n.

       -used n
              Доступ  до  файла було здійснено менше, більше або точно n днів з моменту останньої
              зміни у файлі.

       -user ім'я
              Власником файла є користувач  ім'я  (можна  скористатися  числовим  ідентифікатором
              користувача).

       -wholename взірець
              Див -path. Ця альтернатива є менш розповсюдженою за -path.

       -writable
              Встановлює  відповідність файлам, які придатні до запису для поточного користувача.
              Тут буде взято до уваги списки керування доступом (ACL)  та  інші  фактори  надання
              прав  доступу,  які  буде  проігноровано  під  час перевірки -perm. У цій перевірці
              використано системний виклик access(2), тому її може бути дезінформовано  серверами
              NFS,  які  виконують  прив'язування  UID (або root-ущільнення), оскільки у багатьох
              системах access(2) реалізовано на  боці  ядра  клієнта,  а  отже,  вони  не  можуть
              використати дані прив'язки до UID, які зберігаються на сервері.

       -xtype c
              Те  саме,  що  і  -type,  якщо  файл  не  є символічним посиланням. Для символічних
              посилань: якщо вказано параметр  -H  або  -P,  повертає  істинність,  якщо  файл  є
              посиланням  на  файл  типу c; якщо вказано параметр -L, повертає істинність, якщо c
              дорівнює «l». Іншими словами, для символічних посилань -xtype перевіряє тип  файла,
              який не перевіряє -type.

       -context взірець
              (Лише SELinux) Контекст захисту файла відповідає взірцю.

   ДІЇ
       -delete
              Вилучити файли або каталоги. Повертає істину, якщо вилучення відбулося успішно Якщо
              під час вилучення сталася помилка, буде виведено повідомлення про помилку,  а  стан
              виходу find буде ненульовим (якщо вихід з програми врешті станеться).

              Попередження:  пам'ятайте,  що  find  обробляє  рядок  команди як вираз, тому, якщо
              спершу вказати -delete, find спробує вилучити усе під початковими точками,  які  ви
              вказали.

              Використання  дії  -delete  у  рядку  команди  автоматично  вмикає параметр -depth.
              Оскільки -depth вимикає -prune,  дію  -delete  не  можна  ефективно  поєднувати  із
              -prune.

              Часто  користувачі  перевіряють  рядок  команди  find за допомогою -print, перш ніж
              додавати  -delete  для  виконання  вилучення  файлів.  Щоб  уникнути  несподіванок,
              зазвичай, краще запам'ятати, що варто використовувати -depth під час цих попередніх
              перевірок явним чином.

              Дією -delete не можна скористатися для вилучення каталогу, якщо він не є порожнім.

              Якщо вказано параметр -ignore_readdir_race, find ігноруватиме помилки дії  -delete,
              якщо  файл  зник  з  моменту читання батьківського каталогу: програма не видаватиме
              ніякої діагностики щодо помилок, не змінить  код  виходу  на  ненульовий,  а  кодом
              повернення для дії -delete буде істинність.

       -exec команда ;
              Виконати команду; істина, якщо буде повернуто стан виходу 0. Усі наступні аргументи
              find буде оброблено як аргументи команди, аж доки не буде  виявлено  аргументу,  що
              містить  «;». Рядок «{}» буде замінено на назву поточного файла в обробці усюди, де
              його буде виявлено в аргументах команди, а не лише в аргументах,  де  його  вказано
              окремо,  я  у  деяких  версіях  find.   Обидві  ці  конструкції  можуть потребувати
              екранування (за допомогою «\») або  взяття  у  лапки  для  запобігання  розгортанню
              командною  оболонкою.  Приклади  використання  параметра  -exec  наведено у розділі
              ПРИКЛАДИ. Вказану команду буде запущено один раз для кожного з відповідних  файлів.
              Запуск  команди  відбуватиметься у початковому каталозі. Із використанням дії -exec
              пов'язано проблеми із захистом, яких не можна уникнути. Якщо хочете  позбутися  цих
              проблем, користуйтеся параметром -execdir.

       -exec команда {} +
              Цей  варіант  дії  -exec  запускає вказану команду над вибраними файлами, але рядок
              команди буде побудовано дописуванням кожного вибраного  файла;  загальна  кількість
              викликів  команди  буде  набагато  меншою  за  кількість  відповідних файлів. Рядок
              команди буде побудовано, здебільшого, у той самий спосіб, у який будує  свої  рядки
              команд  xargs. У команді можна використовувати лише один екземпляр «{}», і його має
              бути вказано наприкінці, одразу перед «+»; його має бути екрановано  (за  допомогою
              «\»)  або  взято  у лапки для запобігання його обробці командною оболонкою. Команду
              буде виконано у початковому каталозі. Якщо якийсь із викликів у формі  «+»  поверне
              ненульове  значення, як стан виходу, find поверне ненульовий стан виходу. Якщо find
              трапиться помилка, це може іноді спричинити негайний вихід з програми, тому деякі з
              команд  у  черзі  виконання взагалі не буде виконано. З цієї причини, у конструкції
              -exec команда ... {} + -quit команду команда може бути  не  запущено  взагалі.  Цей
              варіант -exec завжди повертає істину.

       -execdir команда ;

       -execdir команда {} +
              Подібний  до  -exec,  але вказану команду буде запущено з підкаталогу, який містить
              відповідний файл. Зазвичай, цим підкаталогом є каталог, у якому ви запускаєте find.
              Так  само,  як  з  -exec,  {}  слід брати у лапки, якщо find запускають з командної
              оболонки. Це набагато безпечніший спосіб виклику команд, оскільки його використання
              надає  змогу  уникнути  конкурентності  під  час  визначення  шляхів до відповідних
              файлів. Як і з дією -exec, форма з «+» -execdir побудує рядок команди  для  обробки
              декількох  відповідних  файлів,  але  будь-який вказаний виклик команди призведе до
              виведення списку лише файлів у тому самому каталозі.  Якщо  ви  використовуєте  цей
              параметр, вам слід переконатися, що у вашій змінній середовища PATH немає посилання
              на «.». Якщо цього не зробити, зловмисник зможе запускати  будь-які  потрібні  йому
              команди,  створивши  файл з відповідною назвою у каталозі, у якому ви запускатимете
              -execdir.  Те саме стосується записів  у  PATH,  які  є  порожніми  або  які  не  є
              абсолютними  назвами  каталогів.  Якщо  будь-який  з  викликів форми з «+» повертає
              ненульове значення як стан виходу, стан виходу з find також буде  ненульовим.  Якщо
              find  трапиться  помилка,  це  іноді  може  спричинити  негайне  завершення  роботи
              програми, тому команди у  черзі  може  бути  взагалі  не  виконано.  Результат  дії
              залежить  від  того,  який  варіант  використано, з + чи з ;; -execdir команда {} +
              завжди повертає істину, а -execdir команда {} ; повертає істину, лише якщо  команда
              повертає 0.

       -fls файл
              Істина;  подібний  до -ls, але записує до файла, подібно до -fprint. Файл виведення
              буде створено завжди, навіть якщо за ключем нічого не буде  знайдено.  Див.  розділ
              НЕЗВИЧАЙНІ  НАЗВИ  ФАЙЛІВ,  щоб  дізнатися  більше  про те, як програма оброблятиме
              незвичні символи у назвах файлів.

       -fprint файл
              Істина; вивести повну назву файла до файла файл. Якщо файла файл не існує на момент
              запуску find, його буде створено; якщо файл існує, його буде обрізано. Назви файлів
              /dev/stdout і /dev/stderr буде  оброблено  особливим  чином;  вони  посилаються  на
              стандартне  виведення  та  стандартне виведення помилок, відповідно. Файл виведення
              буде створено завжди, навіть якщо не буде встановлено відповідності жодному  файлу.
              Див.  розділ  НЕЗВИЧАЙНІ  НАЗВИ  ФАЙЛІВ,  щоб  дізнатися більше про те, як програма
              обробляє незвичайні символи у назвах файлів.

       -fprint0 файл
              Істина; подібний до -print0,  але  записує  до  файла,  подібно  до  -fprint.  Файл
              виведення буде створено завжди, навіть якщо за ключем нічого не буде знайдено. Див.
              розділ  НЕЗВИЧАЙНІ  НАЗВИ  ФАЙЛІВ,  щоб  дізнатися  більше  про  те,  як   програма
              оброблятиме незвичні символи у назвах файлів.

       -fprintf файл формат
              Істина;  подібний  до  -printf,  але  записує  до  файла,  подібно до -fprint. Файл
              виведення буде створено завжди, навіть якщо за ключем нічого не буде знайдено. Див.
              розділ   НЕЗВИЧАЙНІ  НАЗВИ  ФАЙЛІВ,  щоб  дізнатися  більше  про  те,  як  програма
              оброблятиме незвичні символи у назвах файлів.

       -ls    Істина; додає поточний файл у форматі ls -dils до списку,  який  буде  виведено  до
              стандартного   виведення.   Розмір   блоків  вважатиметься  рівним  1 кБ,  якщо  не
              встановлено змінну середовища POSIXLY_CORRECT. Встановлення цієї  змінної  призведе
              до  використання  512-байтових  блоків.  Див.  розділ  НЕЗВИЧАЙНІ НАЗВИ ФАЙЛІВ, щоб
              дізнатися про те, як відбуватиметься обробка незвичайних символів у назвах файлів.

       -ok команда ;
              Подібний до -exec, але із  надсиланням  початкового  запиту  до  користувача.  Якщо
              користувач  погоджується,  буде  виконано  команду.  Якщо  погодження не буде, буде
              повернуто логічну хибність. Якщо  буде  запущено  команду,  її  стандартне  джерело
              вхідних  даних  буде переспрямовано з /dev/null. Цю дію не можна вказувати разом із
              параметром -files0-from.

              Відповідь на запит буде порівняно із парою формальних  виразів  для  визначення,  є
              відповідь  підтвердженням  чи  запереченням. Цей формальний вираз буде отримано від
              системи, якщо встановлено змінну середовища POSIXLY_CORRECT, або,  якщо  змінну  не
              встановлено,  з  перекладів  повідомлень  find.  Якщо  у системі немає відповідного
              визначення, буде використано визначення самої програм  find.  У  всіх  випадках  на
              обробку формального виразу впливатимуть змінні середовища LC_CTYPE (класи символів)
              і LC_COLLATE (діапазони символів та класи еквівалентності).

       -okdir команда ;
              Подібний до -execdir, але із надсиланням початкового запиту до  користувача  у  той
              самий  спосіб, що і для -ok. Якщо користувач не погоджується, буде просто повернуто
              логічну хибність. Якщо буде запущено команду, її стандартне джерело  вхідних  даних
              буде  переспрямовано  з  /dev/null.  Цю  дію не можна вказувати разом із параметром
              -files0-from.

       -print Істина; виводить  повну  назву  файла  до  стандартного  виведення  із  доповненням
              символом  нового рядка. Якщо ви переспрямовуєте виведення find до іншої програми, і
              існує найменша можливість того, що файли, які шукає програма, може міститися символ
              нового рядка, вам варто скористатися параметром -print0 замість -print. Див. розділ
              НЕЗВИЧАЙНІ  НАЗВИ  ФАЙЛІВ,  щоб  дізнатися  про  те,  як  відбуватиметься   обробка
              незвичайних символів у назвах файлів.

       -print0
              Істина;  виводить  повну  назву  файла  до  стандартного  виведення  із доповненням
              нуль-символом (замість символу нового рядка, який використано для -print). Це надає
              змогу  належним  чином  обробляти назви файлів, які містять символи нового рядка та
              інші тип пробілів, у програмах, які обробляють виведені  find  дані.  Цей  параметр
              відповідає параметру -0 програми xargs.

       -printf формат
              Істина; вивести формат до стандартного виведення з обробкою керівних послідовностей
              «\» та інструкцій «%». Ширини полів та  точність  можна  вказати  як  у  функції  C
              printf(3).  Будь  ласка, зауважте, багато цих полів буде виведено як %s, а не %d, і
              це означає, що прапорці працюватимуть не так, як ви  могли  сподіватися.  Це  також
              значить,  що  прапорець  «-»  не  працюватиме  (він  примусово встановлює для полів
              вирівнювання ліворуч). На відміну від -print, -printf не додає символ нового  рядка
              наприкінці рядка. Керівні послідовності та інструкції є такими:

              \a     Гудок попередження.

              \b     Backspace.

              \c     Припинити виведення з цього формату негайно і очистити виведення.

              \f     Подавання бланку.

              \n     Новий рядок.

              \r     Повернення каретки.

              \t     Горизонтальна табуляція.

              \v     Вертикальна табуляція.

              \0     NUL ASCII.

              \\     Сам символ зворотної похилої риски («\»).

              \NNN   Символ, чиїм кодом ASCII є NNN (вісімкове число).

              Символ  «\»,  після  якого  вказано  будь-який  інший  символ  вважається звичайним
              символом, тому буде виведено обидва ці символи.

              %%     Сам символ відсотків.

              %a     Час останнього доступу до файла у форматі, у якому повертає дані  функція  C
                     ctime(3).

              %Ak    Час  останнього  доступу  до файла у форматі, який вказано літерою k, якою є
                     або «@», або інструкція для функції C strftime(3). Нижче  наведено  неповний
                     список  можливих  значень  k.  Будь  ласка,  зверніться  до  документації  з
                     strftime(3),  щоб  ознайомитися  із  повним  списком.   Деякі   з   символів
                     специфікації  перетворення можуть бути недоступними на певних системах через
                     відмінності в реалізації бібліотечної функції strftime(3).

                     @      секунди з 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.00 .. 61.00). Із дробовою частиною.

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

                     +      Дата і час, відокремлені «+»,  приклад:  «2004-04-28+22:22:05.0».  Це
                            розширення  GNU.  Час  задається  у поточному часовому поясі (на який
                            можна вплинути встановленням  змінної  середовищі  TZ).  Поле  секунд
                            включає дробову частину.

                     X      представлення  часу  у  локалі  (Г:Х:С).  У поле секунд буде включено
                            дробову частину.

                     Z      часовий пояс (наприклад, EDT) або нічого, якщо часовий пояс не  можна
                            визначити

                     Поля дат:

                     a      скорочена форма запису дня тижня у локалі (Пн..Нд)

                     A      повна назва дня тижня у локалі, змінної довжини (Понеділок..Неділя)

                     b      скорочена назва місяця у локалі (січ..гру)

                     B      повна назва місяця у локалі, змінної довжини (січень..грудень)

                     c      дата  і  час  у локалі (Sat Nov 04 12:02:33 EST 1989). Формат є таким
                            самим, як і у ctime(3), і щоб зберегти сумісність із цим форматом,  у
                            полі секунд не буде дробової частини.

                     d      день місяця (01..31)

                     D      дата (мм/дд/рр)

                     F      дата (рррр-мм-дд)

                     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-байтових
                     блоках. Оскільки місце на диску визначається у величинах, кратних до розміру
                     блоку  у  файловій  системі, це значення, зазвичай, є більшим за %s/512, але
                     воно може бути і меншим, якщо файл є розрідженим.

              %Bk    Час створення файла, у форматі, вказаному аргументом k, який є тим самим, що
                     і  для  %A. Ця інструкція створює порожній рядок, якщо у базовій операційній
                     системі або файловій системі не передбачено підтримки часу створення.

              %c     Час останньої зміни стану файла у форматі, у якому повертає дані  функція  C
                     ctime(3).

              %Ck    Час  останньої зміни стану файла у форматі, визначеному k, який є тим самим,
                     що і для %A.

              %d     Глибина файла в ієрархії каталогів; 0 означає, що файл є початковою точкою.

              %D     Номер  пристрою,  на  якому  зберігається  файл   (поле   st_dev   структури
                     статистичних даних), у десятковій формі.

              %f     Вивести  базову назву; назву файла без усіх каталогів (лише останній запис у
                     шляху). Для  /  результатом  буде  «/».  Приклади  можна  знайти  у  розділі
                     ПРИКЛАДИ.

              %F     Тип  файлової  системи,  у  якій  зберігається  файл;  цим  значенням  можна
                     скористатися для -fstype.

              %g     Назва групи файла, або числовий ідентифікатор  групи,  якщо  у  групи  немає
                     назви.

              %G     Цифровий ідентифікатор групи файла.

              %h     Назва  каталогу;  початкові  каталоги  у  назві  файла  (усе  у шляху, окрім
                     останнього елемента). Якщо  у  назві  файла  немає  символів  похилої  риски
                     (оскільки  він  зберігається  у  поточному  каталозі)  специфікатор  %h буде
                     розгорнуто до «.». Для файлів,  які  самі  є  каталогами  і  містять  символ
                     похилої  риски  (зокрема /), %h буде розгорнуто до порожнього рядка. Приклад
                     можна знайти у розділі ПРИКЛАДИ.

              %H     Початкова точка, під якою було знайдено файл

              %i     Номер inode файла (у десятковій формі).

              %k     Місце, яке використано на диску для зберігання цього файла, у блоках розміру
                     1 кБ.  Оскільки  місце на диску визначається у величинах, кратних до розміру
                     блоку у файловій системі, це значення, зазвичай, є більшим за  %s/1024,  але
                     воно може бути і меншим, якщо файл є розрідженим.

              %l     Об'єкт  символічного  посилання  (порожній рядок, якщо файл не є символічним
                     посиланням).

              %m     Біти  прав  доступу  до  файла  (у  вісімковій  формі).  У  цьому  параметрі
                     використовують   «традиційні»   числа,   які   використовують   у  більшості
                     реалізацій, але якщо ваша  реалізація  використовує  нетипове  упорядкування
                     вісімкових  бітів  прав  доступу,  ви  побачите  відмінність  між  справжнім
                     значенням режиму доступу до файла і даними, які виведено %m. Зазвичай,  слід
                     вказувати  початковий  нуль у цьому числі, а для цього вам слід скористатися
                     прапорцем # (як у, наприклад, «%#m»).

              %M     Права доступу до файла (у символьній  формі,  як  для  ls).  Підтримку  цієї
                     інструкції реалізовано у findutils 4.2.5 та новіших версіях.

              %n     Кількість жорстких посилань на файл.

              %p     Назва файла.

              %P     Назва файла із вилученням назви початкової точки, де його було знайдено.

              %s     Розмір файла у байтах.

              %S     Розрідженість  файла.  Обчислюється  за  формулою  (РОЗМІР_БЛОКУ*st_blocks /
                     st_size). Точне значення для звичайного файла певної  довжини  залежить  від
                     системи. Втім, зазвичай, для розріджених файлів це значення є меншим за 1.0,
                     а файли, у яких використано опосередковані блоки, можуть мати значення,  яке
                     є  більшим  за  1.0.  Загалом,  кількість  блоків,  які  використано файлом,
                     залежить  від  файлової  системи.   Значення   РОЗМІР_БЛОКУ   залежить   від
                     операційної системи, але, зазвичай, дорівнює 512 байтів. Якщо розмір файла є
                     нульовим, виведене значення є невизначеним. У системах,  де  не  реалізовано
                     підтримку st_blocks, припускають, що розрідженість файлів дорівнює 1.0.

              %t     Час  останнього  внесення  змін  до  файла  у форматі, у якому повертає дані
                     функція C ctime(3).

              %Tk    Час останнього внесення змін до файла у форматі, визначеному k, який  є  тим
                     самим, що і для %A.

              %u     Ім'я користувача-власника файла або числовий ідентифікатор користувача, якщо
                     у користувача немає імені.

              %U     Числовий ідентифікатор користувача файла.

              %y     Тип файла (подібний до виведеного ls -l), U=невідомий тип (такого,  загалом,
                     не повинно бути)

              %Y     Тип  файла  (подібний  до  %y)  із  переходом  за  символічними посиланнями:
                     «L»=цикл, «N»=не існує, «?» для будь-якого іншого повідомлення  про  помилку
                     при визначенні типу призначення символічного посилання.

              %Z     (Лише SELinux) Контекст захисту файла.

              %{ %[ %(
                     Зарезервовано для використання у майбутньому.

              Символ  «%»,  після якого вказано будь-який інший символ, буде відкинуто, але інший
              символ буде виведено (втім, не варто на це покладатися, оскільки у процесі розвитку
              програми  може  бути  впроваджено інші символи форматування). Символ «%» наприкінці
              аргументу форматування спричиняє невизначену поведінку, оскільки після нього  немає
              ніяких символів.

              У  інструкціях  %m  і  %d  передбачено  підтримку  прапорців  #, 0 і +, але в інших
              інструкціях цього не передбачено, навіть якщо ці інструкції виводять  числа.  Серед
              числових  інструкцій, для яких не передбачено підтримку цих прапорців G, U, b, D, k
              та n.  Передбачено  підтримку  прапорця  форматування  «-».  Цей  прапорець  змінює
              вирівнювання  поля  з  вирівнювання  праворуч  (типовий  варіант)  на  вирівнювання
              ліворуч.

              Див. розділ НЕЗВИЧАЙНІ НАЗВИ ФАЙЛІВ, щоб  дізнатися  більше  про  те,  як  програма
              оброблятиме незвичні символи у назвах файлів.

       -prune Істина;  якщо файл є каталогом, не спускатися у нього. Якщо задано параметр -depth,
              -prune не працюватиме. Оскільки -delete неявним  чином  встановлює  -depth,  ви  не
              зможете  скористатися одночасно -prune і -delete. Наприклад, щоб пропустити каталог
              src/emacs і усі файли і каталоги у ньому, і вивести назви інших  знайдених  файлів,
              віддайте таку команду:
                  find . -path ./src/emacs -prune -o -print

       -quit  Вийти  негайно  (із  нульовим кодом виходу, якщо не сталося помилок). Відрізняється
              від -prune, оскільки -prune буде застосовано лише до вмісту обрізаних каталогів,  а
              -quit  просто негайно припиняє роботу find. Не залишиться працювати жодних дочірніх
              процесів. Перед виходом з  програми  буде  виконано  усі  рядки  команд,  які  було
              побудовано -exec ... + або -execdir ... +. Після виконання -quit не відбуватиметься
              обробка жодних файлів, які вказано у  рядку  команди.  Наприклад,  у  відповідь  на
              find /tmp/щось /tmp/десь -print -quit буде виведено лише «/tmp/щось».
              Одним  із  типових  випадків  використання  -quit  є  припинення пошуків у файловій
              системі, щойно буде знайдено те, що потрібно. Наприклад, якщо потрібно знайти  лише
              один файл, можна зробити так:
                  find / -name голка -print -quit

   ОПЕРАТОРИ
       Список у порядку спадання пріоритетності:

       ( вираз )
              Перевизначити  пріоритетність.  Оскільки  круглі  дужки  мають  особливе значення у
              командній оболонці, вам, зазвичай, доведеться їх екранувати. У  багатьох  прикладах
              на  цій  сторінці підручника для цього використано символи зворотної похилої риски:
              «\(...\)» замість «(...)».

       ! вираз
              Істина, якщо вираз має значення хибності.  Цей  символ  також,  зазвичай,  потребує
              екранування від взаємодії із командною оболонкою.

       -not вираз
              Те саме, що і ! вираз, але несумісне з POSIX.

       вираз1 вираз2
              Два  вирази  поспіль  вважаються  об'єднаними  неявно  за допомогою -a; програма не
              обчислюватиме значення вираз2, якщо вираз1 є хибним.

       вираз -a вираз2
              Те саме, що і вираз1 вираз2.

       вираз -and вираз2
              Те саме, що і вираз1 вираз2, але несумісне з POSIX.

       вираз1 -o вираз2
              АБО; програма не обчислюватиме значення вираз2, якщо значення вираз1 є істинним.

       вираз1 -or вираз2
              Те саме, що і вираз1 -o вираз2, але несумісне з POSIX.

       вираз1 , вираз2
              Список; буде завжди обчислено  значення  вираз1  і  вираз2.  Значення  вираз1  буде
              відкинуто;  значенням  списку  буде  значення  вираз2.  Оператор  «кома»  може бути
              корисним для пошуку записів декількох різних типів, але з обходом ієрархії файлової
              системи  лише  раз.  Для  виведення  списку  різноманітних  відповідних  записів до
              декількох різних файлів виведення можна скористатися дією -fprintf.

       Будь ласка, зауважте, що оператор -a, якщо його вказано не явно (наприклад, у вигляді двох
       перевірок,  між  якими  не вказано явно оператора) або явно, має вищий пріоритет за -o. Це
       означає, що find . -name файлА -o -name файлБ -print ніколи не виведе файлА.

НЕЗВИЧАЙНІ НАЗВИ ФАЙЛІВ

       Результатом виконання багатьох дій у find є виведення даних, якими керують інші  програми.
       Це  стосується  назв, розмірів, часу внесення змін до файлів тощо. Потенційною проблемою є
       назви файлів, оскільки вони можуть містити будь-які символи, окрім «\0» і «/».  Незвичайні
       символи  у  назвах  файлів можуть призводити до неочікуваних і часто небажаних наслідків у
       терміналі  (наприклад,  змінювати  параметри  роботи  функціональних   клавіш   у   деяких
       терміналах).  Незвичайні  символи  у  різних діях буде оброблено по-різному, як це описано
       нижче.

       -print0, -fprint0
              Завжди виводить точну назву файла, без змін, навіть якщо виведення відбувається  до
              термінала.

       -ls, -fls
              Незвичайні  символи  буде завжди екрановано. Пробіл, символ зворотної похилої риски
              та символи подвійних лапок буде виведено з  використанням  екранування  у  стилі  C
              (наприклад,  «\f»,  «\"»).  Інші  незвичайні  символи буде виведено з використанням
              вісімкової нейтралізації. Інші ж друковані символи (для -ls і -fls ці символи мають
              вісімкові значення кодування від 041 до 0176) буде виведено без змін.

       -printf, -fprintf
              Якщо  дані  буде  виведено не до термінала, їх буде виведено без обробки. Якщо дані
              виводитимуться  до  термінала,  результат  залежатиме  від  того,  яку   інструкцію
              використано. Інструкції %D, %F, %g, %G, %H, %Y і %y буде розгорнуто до значень, які
              не контролюються власникам файлів і будуть виведені без обробки. Інструкції %a, %b,
              %c,  %d,  %i,  %k,  %m,  %M,  %n, %s, %t, %u і %U мають значення, які контролюються
              власниками файлів, але які не можна використовувати для надсилання довільних  даних
              до  термінала,  і тому їх буде виведено без обробки. Інструкції %f, %h, %l, %p і %P
              буде нейтралізовано. Нейтралізація виконуватиметься у той самий спосіб,  що  і  для
              GNU  ls. Це не той механізм нейтралізації, який використано для -ls і -fls. Якщо ви
              можете визначити формат, яким слід скористатися для виведення даних find, зазвичай,
              краще  скористатися  роздільником «\0» замість символу нового рядка, оскільки назви
              файлів можуть містити пробіли і символи нового  рядка.  Для  визначення  того,  які
              символи слід нейтралізувати, буде використано значення змінної середовища LC_CTYPE.

       -print, -fprint
              Нейтралізація  виконуватиметься  у  той  самий спосіб, що і для -printf і -fprintf.
              Якщо ви користуєтеся find у скрипті або у випадку,  коли  відповідні  файли  можуть
              мати довільні назви, вам слід спробувати скористатися -print0 замість -print.

       Дії  -ok  і  -okdir  виводять  назву  поточного  файла без обробки. Це може бути змінено у
       майбутніх випусках.

СУМІСНІСТЬ ІЗ СТАНДАРТАМИ

       Для забезпечення найточнішої сумісності зі стандартом POSIX  вам  слід  встановити  змінну
       середовища  POSIXLY_CORRECT.  У стандарті POSIX (IEEE Std 1003.1-2008, редакція 2016 року)
       вказано такі параметри:

       -H     Підтримку цього параметра передбачено.

       -L     Підтримку цього параметра передбачено.

       -name  Підтримку цього  параметра  передбачено,  але  сумісність  із  POSIX  залежить  від
              сумісності  із  POSIX  загальносистемної бібліотечної функції fnmatch(3). На момент
              випуску findutils-4.2.2, метасимволи командної оболонки  (наприклад  «*»,  «?»  або
              «[]»)  вважалися  відповідними початковій «.», оскільки цього вимагає інтерпретація
              IEEE PASC 126. Це зміна порівняно із попередніми версіями findutils.

       -type  Підтримку передбачено. POSIX визначає «b», «c», «d», «l», «p», «f»  і  «s».  У  GNU
              find  також  передбачено  підтримку «D», тобто Door (дверей), там, де цю можливість
              надає  операційна  система.  Крім  того,  GNU  find  уможливлює  одночасне  задання
              декількох типів у форматі списку відокремлених комами значень.

       -ok    Підтримку  передбачено.  Інтерпретація відповіді виконується відповідно до шаблонів
              «yes» та «no», які вибрано встановленим значенням змінної  середовища  LC_MESSAGES.
              Якщо   встановлено   значення   змінної  середовища  POSIXLY_CORRECT,  для  взірців
              позитивної (yes) і негативної (no)  відповідей  буде  використано  загальносистемні
              визначення.  Див.  документацію  системи  щодо  nl_langinfo(3),  зокрема  YESEXPR і
              NOEXPR. Якщо значення змінної POSIXLY_CORRECT не встановлено, взірці буде  взято  з
              власного каталогу повідомлень find.

       -newer Підтримку  передбачено.  Якщо  вказаний  файл є символічним посиланням, його завжди
              буде  розіменовано.  Це  зміна  попередньої  поведінки,  якою   було   використання
              відповідного часу з символічного посилання; див. розділ ЖУРНАЛ нижче.

       -perm  Передбачено  підтримку.  Якщо  змінну  середовища  POSIXLY_CORRECT  не встановлено,
              підтримку деяких аргументів режиму доступу (наприклад +a+x), які  не  є  чинними  у
              POSIX, передбачено для зворотної сумісності.

       Інші основні параметри
              Передбачено  підтримку  усіх  основних  параметрів  -atime,  -ctime, -depth, -exec,
              -group, -links, -mtime, -nogroup, -nouser, -ok, -path, -print, -prune, -size, -user
              і -xdev.

       Стандарт  POSIX  визначає круглі дужки «(», «)», заперечення «!» і логічні оператори І/АБО
       -a та -o.

       Усі інші параметри, ключі, вирази поки є розширеннями стандарту POSIX. Втім, багато з  цих
       розширень не є унікальними для GNU find.

       Стандарт POSIX потребує виявлення циклів з боку find:

              Інструмент find має виявляти нескінченні цикли; тобто перехід до раніше відвіданого
              каталогу,  який  є  попередником  останнього  обробленого  файла.   При   виявленні
              нескінченного  циклу  find має записувати діагностичне повідомлення до стандартного
              виведення і має або відновити позицію в ієрархії каталогів, або перервати роботу.

       GNU find є сумісним із цими  вимогами.  Кількість  посилань  для  каталогів,  які  містять
       записи, які є жорсткими посиланням на попередника, часто буде меншою за кількість посилань
       для каталогів без цих  записів.  Це  може  означати,  що  GNU  find  іноді  оптимізуватиме
       відвідання  підкаталогу,  який  насправді є посиланням на свого попередника. Оскільки find
       насправді  не  входитиме  до  такого  підкаталогу,  можна   не   видавати   діагностичного
       повідомлення.  Хоча  ця  поведінка  може  іноді  призвести  до  плутанини, навряд чи хтось
       насправді покладатиметься на таку поведінку. Якщо оптимізацію за переходами було  вимкнено
       за   допомогою   -noleaf,   запис   каталогу  завжди  інспектуватиметься,  а  діагностичне
       повідомлення  буде  видано  там,  де  це   потрібно.   Символічні   посилання   не   можна
       використовувати  цикли  у  файловій системі, як такі, але якщо використано параметр -L або
       параметр -follow, діагностичне повідомлення буде видано,  коли  find  виявить  циклічність
       символічних  посилань. Як і з циклами, що містять жорсткі посилання, оптимізація переходів
       часто означатиме, що find знає,  що  немає  потреби  у  виклику  stat()  або  chdir()  для
       символічного посилання, тому така діагностика часто є непотрібною.

       Підтримку  параметра -d реалізовано для сумісності з різноманітними системами BSD, але вам
       слід використовувати замість цього параметра сумісний із POSIX параметр -depth.

       Змінна середовища POSIXLY_CORRECT не впливає на  поведінку  перевірок  -regex  і  -iregex,
       оскільки ці перевірки не вказано у стандарті POSIX.

ЗМІННІ СЕРЕДОВИЩА

       LANG   Надає типове значення для змінних інтернаціоналізації, які не встановлено або які є
              порожніми.

       LC_ALL Якщо для змінної встановлено непорожнє рядкове значення,  воно  має  пріоритет  над
              усіма іншими змінними інтернаціоналізації.

       LC_COLLATE
              Стандарт  POSIX  визначає,  що  ця  змінна  впливає  на  встановлення відповідності
              взірців, яке  слід  використовувати  для  параметра  -name  GNU  find  використовує
              бібліотечну   функцію   fnmatch(3),   отже,   підтримка   LC_COLLATE  залежить  від
              загальносистемної бібліотеки. Ця змінна також впливає на інтерпретацію відповіді на
              -ok;  хоча  значення  змінної  LC_MESSAGES  вибирає  справжній  взірець,  який буде
              використано для інтерпретації відповіді на -ok, інтерпретація будь-яких  виразів  у
              фігурних дужках залежатиме від LC_COLLATE.

       LC_CTYPE
              Значення  цієї  змінної  впливає на обробку класів символів, які буде використано у
              формальних  виразах,  а  також  у  перевірці  -name,  якщо   відповідну   підтримку
              передбачено  у  загальносистемній  бібліотечній  функції  fnmatch(3). Значення цієї
              змінної також впливає на  інтерпретацію  будь-яких  класів  символів  у  формальних
              виразах,   які   буде  використано  для  інтерпретації  відповідь  на  запит,  який
              надсилатиме -ok. Значення змінної середовища LC_CTYPE також впливатиме на  те,  які
              символи вважатимуться непридатними для друку при виведенні назв файлів; див. розділ
              «НЕЗВИЧАЙНІ НАЗВИ ФАЙЛІВ».

       LC_MESSAGES
              Визначає локаль, яку буде використано для інтернаціоналізованих  повідомлень.  Якщо
              встановлено  значення  змінної середовища POSIXLY_CORRECT, ця змінна також визначає
              інтерпретацію відповіді на запит, який виконує дія -ok.

       NLSPATH
              Визначає розташування каталогів інтернаціоналізації повідомлень.

       PATH   Впливає на те, у яких каталогах виконуватиметься пошук виконуваних файлів, які буде
              викликано -exec, -execdir, -ok і -okdir.

       POSIXLY_CORRECT
              Визначає  розмір  блоку,  який  використовуватимуть  -ls  і  -fls. Якщо встановлено
              значення POSIXLY_CORRECT, одиницями блоків будуть  512  байтів.  Якщо  значення  не
              встановлено, одиницями будуть блоки у 1024 байтів.

              Встановлення   значення   цієї   змінної   також   типово  вимикає  повідомлення  з
              попередженнями (тобто, неявним чином встановлює -nowarn), оскільки  POSIX  вимагає,
              щоб,  окрім  виведення  для  -ok,  усі  повідомлення, що виводяться до stderr, були
              діагностичними і мали призводити до ненульового стану виходу.

              Якщо значення POSIXLY_CORRECT не встановлено, -perm +zzz буде  оброблено  як  -perm
              /zzz,  якщо  +zzz  не є коректним символьним режимом. Якщо значення POSIXLY_CORRECT
              встановлено, такі конструкції призводитимуть до помилки.

              Якщо встановлено POSIXLY_CORRECT, відповідь на запит, який надіслано дією -ok, буде
              оброблено  на  основі  каталогу  повідомлень  системи,  а  не за власним перекладом
              повідомлення find.

       TZ     Визначає часовий пояс для деяких з пов'язаних із часом інструкцій форматування  для
              -printf і -fprintf.

ПРИКЛАДИ

   Простий підхід «find|xargs»
       •      Знайти  файли  із назвою core у каталозі /tmp та усіх його підкаталогах та вилучити
              їх.

                  $ find /tmp -name core -type f -print | xargs /bin/rm -f

              Зауважте, що ця  команда  працюватиме  некоректно,  якщо  у  каталозі  зберігаються
              будь-які  файли  із назвами, що містять символи нового рядка, одинарні або подвійні
              лапки чи пробіли.

   Безпечніший підхід «find -print0 | xargs -0»
       •      Знайти файли із назвою core у каталозі /tmp та підлеглих каталогах і  вилучити  їх,
              обробивши  назви файлів так, щоб файли та каталоги, назви яких міститимуть одинарні
              або подвійні лапки, пробіли або  символи  нового  рядка,  було  оброблено  належним
              чином.

                  $ find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f

              Програма  виконує  перевірку  -name  перед  перевіркою  -type, щоб уникнути виклику
              stat(2) для кожного файла.

       Зауважте, що усе ще існуватиме конкуренція між  моментом,  коли  find  обходить  ієрархію,
       виводячи  назви відповідних файлів, і моментом, коли з цим файлом працюватиме процес, який
       виконуватиме xargs.

   Обробка довільних початкових точок
       •      За складеним програмою proggy шляхом попереднього фільтрування  величезним  списком
              відокремлених  NUL-символом  назв  файлів виконати обробку їх як початкових точок і
              знайти серед них усі звичайні порожні файли:

                  $ proggy | find -files0-from - -maxdepth 0 -type f -empty

              Використання  `-files0-from -`  означає  «прочитати  назви  початкових   точок   зі
              стандартного  джерела вхідних даних, тобто з каналу даних; а -maxdepth 0 забезпечує
              те, що  буде  виконано  інспектування  лише  отриманих  записів,  без  рекурсивного
              переходу каталогами (якщо однією з початкових точок виявиться каталог).

   Виконання команди для кожного з файлів
       •      Запустити файл для кожного файла у поточному каталозі та усіх його підкаталогах.

                  $ find . -type f -exec файл '{}' \;

              Зауважте,  що фігурні дужки взято у одинарні лапки, щоб захистити їх від обробки як
              пунктуації скриптів оболонки. Крапку з комою захищено  символом  зворотної  похилої
              риски  у  подібний  же  спосіб,  хоча  тут теж можна було б скористатися одинарними
              лапками.

       У багатьох випадках краще скористатися синтаксичною конструкцією `-exec ... +` або  навіть
       `-execdir ... +` з міркувань швидкодії та безпеки.

   Обхід файлової системи один раз для виконання двох різних дій
       •      Обійти  файлову  систему один раз, записавши список файлів set-user-ID та каталогів
              до /root/suid.txt, а великих файлів — до /root/big.txt.

                  $ find / \
                      \( -perm -4000 -fprintf /root/suid.txt '%#m %u %p\n' \) , \
                      \( -size +100M -fprintf /root/big.txt '%-10s %p\n' \)

              У цьому прикладі використано символ продовження рядка '\' у перших двох рядках. Так
              зроблено, щоб командна оболонка продовжувала читання команди на наступному рядку.

   Пошук файлів за віком
       •      Шукати  файли  у  вашому  домашньому  каталозі, до яких було внесено зміни протягом
              останніх двадцяти чотирьох годин.

                  $ find $HOME -mtime 0

              Ця команда працює потрібним чином, оскільки час з моменту внесення останніх змін до
              файла  буде поділено на 24 години, а лишок буде відкинуто. Це означає, що файл буде
              відповідним -mtime 0, якщо до нього було внесено зміни не  більше,  ніж  24  години
              тому.

   Пошук файлів за правами доступу
       •      Пошук файлів, які є виконуваними, але не придатними до читання.

                  $ find /sbin /usr/sbin -executable \! -readable -print

       •      Шукати  файли,  для  яких  для  власника  і його групи встановлено права доступу до
              читання і запису, а для інших користувачів лише права на читання, але не запис.

                  $ find . -perm 664

              Файли, які задовольняють ці критерії, але  мають  інші  права  доступу  (наприклад,
              хтось може виконувати файл), вважатимуться невідповідними.

       •      Шукати  файли,  для  яких  для  власника  і його групи встановлено права доступу до
              читання і запису, а для інших користувачів права на читання,  не  беручи  до  уваги
              наявність додаткових бітів прав доступу (наприклад, біта можливості виконання).

                  $ find . -perm -664

              Відповідним вважатиметься, наприклад, файл із режимом доступу 0777.

       •      Шукати  файли,  до  яких  хоч  хтось може записувати дані (власник, група або хтось
              інший).

                  $ find . -perm /222

       •      Шукати файли, до яких може записувати дані їхній власник або його група.

                  $ find . -perm /220
                  $ find . -perm /u+w,g+w
                  $ find . -perm /u=w,g=w

              Усі ці три команди виконують те саме завдання, але у першій  використано  вісімкове
              представлення  режиму доступу до файла, а у двох інших використано символьну форму.
              Щоб файли було визнано відповідними, не обов'язково, щоб  право  на  запис  до  них
              одночасно  було  у  власника  і  його  групи;  достатньо, щоб запис міг здійснювати
              власник або група.

       •      Шукати файли, до яких може записувати дані їхній власник і його група.

                  $ find . -perm -220
                  $ find . -perm -g+w,u+w

              Обидві команди виконують одне завдання.

       •      Складніший пошук за правами доступу.

                  $ find . -perm -444 -perm /222 \! -perm /111
                  $ find . -perm -a+r -perm /a+w \! -perm /a+x

              Обидві ці команди призначено для пошуку файлів, які можуть читати усі  (-perm  -444
              або -perm -a+r), мають принаймні один встановлений під запису (-perm /222 або -perm
              /a+w), але не є виконуваними для усіх (! -perm /111 або ! -perm /a+x, відповідно).

   Обрізання  пропускання файлів і каталогів
       •      Скопіювати вміст /source-dir до /dest-dir,  але  пропустити  файли  і  каталоги  із
              назвою  .snapshot  (і  все,  що  у  них  зберігається).  Також пропустити файли або
              каталоги, чия назва завершується на «~», але не вміст цих каталогів.

                  $ cd /source-dir
                  $ find . -name .snapshot -prune -o \( \! -name '*~' -print0 \) \
                      | cpio -pmd0 /dest-dir

              Конструкція -prune -o \( ... -print0 \) є доволі  поширеною.  Ідея  тут  полягає  у
              тому,  що  вираз  перед  -prune  визначає  те, що має бути вирізано. Втім, сама дія
              -prune  повертає  значення  істинності,  тому  для  наступних  -o   права   частина
              визначатиметься  лише  для  тих каталогів, які не було вирізано (програма навіть не
              вивчатиме вміст каталогів, які було вирізано, тому їхній вміст ні на що не вплине).
              Вираз  у  правій  частині -o взято у дужки лише для ясності. Дужки підкреслюють, що
              дію -print0 буде застосовано лише до того, до чого не застосовано -prune.  Оскільки
              типовий  оператор «І» між перевірками має вищий пріоритет за -o, це все одно типова
              поведінка, але  дужки  допомагають  розібратися  у  тому,  що  відбуватиметься  при
              обчисленні.

       •      За  заданим  каталогом  проєктів  і  пов'язаних  із ними адміністративних каталогів
              системи керування версіями виконати ефективний пошук кореневих каталогів проєктів:

                  $ find repo/ \
                      \( -exec test -d '{}/.svn' \; \
                      -or -exec test -d '{}/.git' \; \
                      -or -exec test -d '{}/CVS' \; \
                      \) -print -prune

              Зразок виведення:

                  repo/project1/CVS
                  repo/gnu/project2/.svn
                  repo/gnu/project3/.svn
                  repo/gnu/project3/src/.svn
                  repo/project4/.git

              У  цьому  прикладі  -prune  запобігає  зайвому  спусканню  ієрархією  каталогів   у
              каталогах,  у  яких  вже  виявлено  потрібні  дані  (наприклад,  ми не шукатимемо у
              project3/src,  оскільки  вже  знайдено  project3/.svn),  але  забезпечує  виявлення
              каталогів на одному рівні ієрархії (project2 і project3).

   Інші корисні приклади
       •      Пошук файлів декількох типів.

                  $ find /tmp -type f,d,l

              Шукати файли, каталоги і символічні посилання у каталозі /tmp, передавши ці типи як
              список відокремлених комами  значень  (розширення  GNU).  Еквівалент  довшого,  але
              придатнішого для портування запису:

                  $ find /tmp \( -type f -o -type d -o -type l \)

       •      Шукати файли із назвою голка і зупинити пошук на першому ж знайденому файлі.

                  $ find / -name голка -print -quit

       •      Демонстрація  інтерпретації  інструкцій  форматування  %f і %h дії -printf у деяких
              рідкісних випадках. Приклад включення деяких виведених даних.

                  $ find . .. / /tmp /tmp/TRACE compile compile/64/tests/find -maxdepth 0 -printf '[%h][%f]\n'
                  [.][.]
                  [.][..]
                  [][/]
                  [][tmp]
                  [/tmp][TRACE]
                  [.][compile]
                  [compile/64/tests][find]

СТАН ВИХОДУ

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

       Якщо  станеться  якась  помилка,  find  може  негайно припинити роботу без завершення усіх
       вказаних дій. Наприклад, можуть лишитися необробленими якісь початкові точки або може бути
       не виконано якість виклики програму у конструкціях -exec ... {} + або -execdir ... {} +.

ЖУРНАЛ

       Починаючи  з  версії  findutils-4.2.2, метасимволи оболонки (наприклад «*», «?» або «[]»),
       які використано у взірцях назв файлів,  відповідають  початковому  символу  «.»,  оскільки
       цього вимагає інтерпретація IEEE POSIX 126.

       Починаючи з findutils-4.3.3, -perm /000 відповідає усім файлам, а не жодному.

       Роздільність часових позначок у наносекунди було реалізовано у findutils-4.3.3.

       Починаючи  з  findutils-4.3.11,  дія  -delete встановлює ненульовий стан виходу find, якщо
       станеться помилка. Втім, find не завершуватиме роботу одразу після помилки.  У  попередніх
       версіях find помилки у дії -delete не впливали на стан виходу з програми.

       Можливість             Версія додавання   Також зустрічається у
       -files0-from           4.9.0
       -newerXY               4.3.3              BSD
       -D                     4.3.1
       -O                     4.3.1
       -readable              4.3.0
       -writable              4.3.0
       -executable            4.3.0
       -regextype             4.2.24
       -exec ... +            4.2.12             POSIX
       -execdir               4.2.12             BSD
       -okdir                 4.2.12
       -samefile              4.2.11
       -H                     4.2.5              POSIX
       -L                     4.2.5              POSIX
       -P                     4.2.5              BSD
       -delete                4.2.3
       -quit                  4.2.3
       -d                     4.2.3              BSD
       -wholename             4.2.0
       -iwholename            4.2.0
       -ignore_readdir_race   4.2.0
       -fls                   4.0
       -ilname                3.8
       -iname                 3.8
       -ipath                 3.8
       -iregex                3.8

       Синтаксичну  конструкцію -perm +РЕЖИМ було вилучено у версії findutils-4.5.12. Замість неї
       слід використовувати -perm /РЕЖИМ. Синтаксична конструкція +РЕЖИМ вважалася  застарілою  з
       версії findutils-4.2.21, яку було випущено у 2005 році.

НЕ-ВАДИ

   Несподіванки у пріоритетності операторів
       Команда  find  .  -name  файлА  -o  -name  файлБ  -print ніколи не виведе файлА, оскільки,
       фактично, вона є еквівалентною до find . -name файлА -o \( -name файлБ -a -print \).  Слід
       пам'ятати,  що  -a  має  вищий  пріоритет  за  -o,  і  що  якщо між перевірками не вказано
       оператора, вважатиметься, що оператором є -a.

   Повідомлення про помилку “шляхи треба вказувати перед виразом”
       $ find . -name *.c -print
       find: шляхи треба вказувати перед виразом
       find: можливий неекранований взірець після ключа «-name»?

       Таке трапляється, якщо командна оболонка може розгорнути взірець  *.c  до  декількох  назв
       файлів,  які  зберігаються у поточному каталозі, і при передаванні отриманих назв файлів у
       рядку команди до find ось так:
       find . -name frcode.c locate.c word_io.c -print
       Ця команда, звичайно ж, не працюватиме, оскільки ключу -name можна  передавати  лише  один
       взірець,  як  аргумент.  Замість  цього,  вам  слід  взяти  взірець у лапки або екранувати
       символ-замінник,   таким   чином,   надавши   find   змогу    використати    взірець    із
       символом-замінником  під  час  пошуку  відповідників назві файла, замість розгортання назв
       файлів у батьківській командній оболонці:
       $ find . -name '*.c' -print
       $ find . -name \*.c -print

ВАДИ

       Існують невиправні проблеми зі захистом, пов'язані із поведінкою, яку  для  find  визначає
       стандарт  POSIX. Ці проблеми не можна усунути без порушення стандарту. Наприклад, неусувну
       небезпеку становить дія -exec. Замість неї слід використовувати дію -execdir.

       Змінна середовища LC_COLLATE не впливає на роботу -ok.

ЗВІТИ ПРО ВАДИ

       Мережева довідка щодо GNU findutils: <https://www.gnu.org/software/coreutils/E
       Повідомляйте про будь-які помилки в перекладі на <https://translationproject.org/team/>

       Про будь-які інші вади повідомляйте за допомогою форми у системі стеження  за  вадами  GNU
       Savannah:
              <https://savannah.gnu.org/bugs/?group=findutils>
       Обговорити  загальні  питання  щодо  пакунка  GNU  findutils  можна  у  списку  листування
       bug-findutils:
              <https://lists.gnu.org/mailman/listinfo/bug-findutils>

АВТОРСЬКІ ПРАВА

       Авторські права © 1990-2022 Free Software Foundation, Inc. Ліцензія GPLv3+: GNU GPL версії
       3 або пізнішої <https://gnu.org/licenses/gpl.html>.
       Це  вільне  програмне забезпечення: Ви можете вільно змінювати і розповсюджувати його. БЕЗ
       ЖОДНИХ ГАРАНТІЙ, в межах, дозволених законом.

ДИВ. ТАКОЖ

       chmod(1),  locate(1),  ls(1),   updatedb(1),   xargs(1),   lstat(2),   stat(2),   ctime(3)
       fnmatch(3), printf(3), strftime(3), locatedb(5), regex(7)

       Повна документація: <https://www.gnu.org/software/findutils/find>
       вона ж доступна локально: info find

ПЕРЕКЛАД

       Український  переклад  цієї  сторінки посібника виконано Andriy Rysin <arysin@gmail.com> і
       Yuri Chornoivan <yurchor@ukr.net>

       Цей переклад є безкоштовною документацією; будь ласка, ознайомтеся з умовами  GNU  General
       Public License Version 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩.  НЕ НАДАЄТЬСЯ ЖОДНИХ
       ГАРАНТІЙ.

       Якщо ви знайшли помилки у  перекладі  цієї  сторінки  підручника,  будь  ласка,  надішліть
       електронний лист до списку листування перекладачів: ⟨trans-uk@lists.fedoraproject.org⟩.

                                                                                          FIND(1)