Приклади використання команди Find в Linux

Більшість популярних файлових менеджерів для операційних систем на ядрі Linux мають досить функціональним інструментом пошуку. Однак не завжди присутніх в ньому параметрів вистачає користувачеві для пошуку необхідної інформації. В такому випадку на допомогу приходити стандартна утиліта, запускаються через «Термінал». Вона дозволяє шляхом введення команди, аргументи і опції запросто відшукати необхідні дані в певній директорії або у всій системі.

Використовуємо команду find в Linux

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

Перехід в директорію через консоль

Для початку хотілося б трохи відступити від основної команди і торкнутися теми додаткових дій, які в майбутньому допоможуть при управлінні з консолі. Справа в тому, що утиліти в дистрибутивах Linux не заточені під пошук всіх, хто знаходиться на комп'ютері елементів. Всі процеси слід запускати тільки з зазначенням повного розташування до елементів або переходити в розташування через команду cd. Зробити це можна досить легко:

  1. Відкрийте встановлений файловий менеджер і перейдіть в потрібну папку, де хочете надалі використовувати команду find.
  2. Перехід до потрібної директорії через файловий менеджер Linux

  3. На будь-якому об'єкті клацніть ПКМ і знайдіть пункт «Властивості».
  4. Перехід до властивостей об'єкта в операційній системі Linux

  5. Ви побачите його батьківську папку з повним зазначенням шляху. Запам'ятайте його, щоб здійснити перехід з «Терміналу».
  6. Дізнатися батьківську папку об'єкта через властивості в Linux

  7. Тепер запустіть консоль, наприклад, через меню.
  8. Запуск терміналу для подальшого введення команд в Linux

  9. Пропишіть там команду cd /home/user/folder , де user - ім'я домашньої папки користувача, а folder - назва необхідної директорії.
  10. Переміститися до розташування в терміналі Linux

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

Пошук файлів в поточній директорії

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

Використання команди find без аргументів в Linux

Активація find без аргументів і опцій використовується тоді, коли треба переглянути відразу всі елементи. Якщо їх назва повністю не поміщається в рядки, варто змінити команду, щоб вона знайшла вид find . -print find . -print .

Пошук файлів в зазначеному каталозі

Команда для відображення файлів через заданий шлях практично не відрізняється від тієї, яку ми згадали вище. Вам так само слід прописати find , а після додати ./folder , якщо хочете дізнатися дані про каталог в поточному розташуванні, або ж буде потрібно вказати повний шлях, шляхом введення, наприклад, find ./home/user/downloads/folder , де folder - кінцева директорія. Кожні елементи будуть виведені окремими рядками в порядку їх глибини.

Використання команди find із зазначенням розташування файлу в Linux

Пошук по імені

Іноді виникає необхідність відобразити тільки задовольняють за назвою об'єкти. Тоді користувачеві потрібно задати окрему опцію для команди, щоб вона зрозуміла звернення. Рядок введення знаходить такий вид: find . -name "word", де word - ключове слово для пошуку, яке обов'язково прописується в подвійних лапках і з урахуванням регістру кожного символу.

Пошук файлів по імені через команду find в Linux

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

Для фільтрації результатів за ключовим словом до аргументу -name додається ще один. Команда набуває вигляду find . -not -name "word" find . -not -name "word" , де word - слово, яке треба виключити.

Увімкнути фільтрацію по ключовим словом команді find в Linux

Ще часом виникає потреба відшукати об'єкти по одному ключу, виключивши при цьому інший. Тоді по черзі привласнюється відразу кілька опцій пошуку і рядок введення виходить такою: find . -name "word" -not name "*.txt" find . -name "word" -not name "*.txt" . Зверніть увагу, що в другому аргументі в лапках вказано «* .txt», а це значить, що find працює не тільки з назвами, але і з форматами файлів, які задаються в такому вигляді.

Поєднаний пошук по імені командою find в Linux

Існує і оператор АБО. Він дозволяє знайти один або відразу декілька відповідних аргументів. Кожен вказується окремо, з додаванням при цьому відповідних аргументів. У підсумку вийде приблизно наступне: find -name "word" -o -name "word1" .

Застосування опції АБО в команді find Linux

Вказівка глибини пошуку

Команда find допоможе користувачеві і тоді, коли йому потрібно знайти вміст директорій тільки до зазначеної глибини, наприклад, не потрібно здійснення аналізу всередині третьої папки. Для установки подібних обмежень впишіть find . -maxdepth N -name "word" find . -maxdepth N -name "word" , де N - максимальна глибина, а -name «word» - будь-які наступні аргументи.

Вказати глибину сканування командою find в Linux

Пошук в декількох директоріях

У багатьох каталогах присутня відразу по кілька папок з різним вмістом. Якщо їх там знаходиться велика кількість, а пошук потрібно здійснити тільки в певних, тоді буде потрібно вказати це при введенні команди find ./folder ./folder1 -type f -name "word" , де ./folder ./folder1 - перелік відповідних директорій, а -name «word» - інші аргументи.

Пошук в декількох папках при використанні команди find в Linux

Відображення прихованих елементів

Без вказівки відповідного аргументу приховані об'єкти, що знаходяться в сканованих каталогах, відображатися в консолі не будуть. Тому користувач вручну прописує додаткову опцію, щоб в результаті команда була такою: find ~ -type f -name ".*" . Ви отримаєте повний список всіх файлів, але якщо ж до деяких з них немає доступу, перед словом find в рядку пропишіть sudo , щоб активувати права суперкористувача.

Відобразити приховані файли командою find в Linux

Сканування домашніх папок груп і користувачів

Кожен користувач може створювати необмежену кількість каталогів і об'єктів в різних розташуваннях. Швидше за все знайти ту інформацію, яка належить одному з користувачів, за допомогою команди find і одного з її аргументів. У «Терміналі» пропишіть find . -user username find . -user username , де username - ім'я користувача. Після введення сканування запускається автоматично.

Показати файли, що належать певному користувачеві командою find в Linux

Приблизно така ж схема працює і з групами користувачів. Запуск аналізу файлів, пов'язаних з однією з груп, відбувається через find /var/www -group groupname . Не забувайте, що об'єктів може бути велика кількість і на виведення їх усіх іноді йде багато часу.

Показати файли, що належать певній групе командою find в Linux

Фільтрація за датою змін

Операційна система автоматично зберігає інформацію про дату зміни кожного існуючого файлу. Команда find дозволяє знайти їх все за вказаною параметру. Потрібно лише прописати sudo find / -mtime N , де N - кількість днів назад, коли об'єкт був змінений останній раз. Приставка sudo тут потрібна для того, щоб отримати дані і про файлах, призначених тільки для суперкористувача.

Фільтрація за датою зміни при команді find в Linux

Якщо ж вас цікавить перегляд елементів, які останній раз відкривалися певну кількість днів назад, тоді рядок трохи змінює свій вигляд на sudo find / -atime N .

Фільтрація за датою відкриття при команді find в Linux

Фільтрація за розміром файлів

Кожен об'єкт має свій розмір, відповідно, команда для пошуку файлів повинна володіти функцією, що дозволяє фільтрувати їх за цим параметром. find вміє це робити, користувачеві необхідно лише задати сам розмір через аргумент. Досить ввести find / -size N , де N - обсяг в байтах, мегабайтах (M) або гігабайтах (G).

Фільтрація пошуку за розміром за допомогою find в Linux

Вказати можна і діапазон шуканих елементів. Тоді в команду вписуються визначники і вийде, наприклад, такий рядок: find / -size +500M -size -1000M . Такий аналіз буде відображати файли більше 500 мегабайтів, але менше 1000.

Встановити діапазон обсягу файлів для пошуку через find в Linux

Пошук порожніх файлів і каталогів

Деякі з файлів або папок бувають порожні. Вони просто займають зайвий простір на диску і іноді заважають нормально взаємодіяти з комп'ютером. Їх слід знайти, щоб визначитися з подальшими діями, а в цьому допоможе find /folder -type f -empty , де / folder - місце, де здійснюється сканування.

Показати порожні об'єкти за допомогою find в Linux

Окремо хотілося б коротенько відзначити інші корисні аргументи, які час від часу стають корисними для користувача:

  • -mount - обмеження тільки на поточну файлову систему;
  • -type f - відображати тільки файли;
  • -type d - показувати тільки директорії;
  • -nogroup , -nouser - пошук файлів, які не належать до жодної групи або не належать користувачу;
  • -version - дізнатися версію використовуваної утиліти.

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

Детальніше: Часто використовувані команди в «Терміналі» Linux

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

Читайте також: Приклади команд grep / cat / ls в Linux