Команда find в Linux і як вона допомагає відображати читабельні розміри файлів

Команда find в Linux і як вона допомагає відображати читабельні розміри файлів

08:39, 07.06.2024

Зміст статті
arrow

  • Дія -printf команди у поєднанні з find
  • Команда du в дії
  • Визначення розмірів файлів за допомогою ls
  • Розширена фільтрація за допомогою grep
  • Сортування та уточнення результатів
  • Підсумки

Find - досить ефективний метод в операційній системі Linux, необхідний для пошуку каталогів/файлів за певними атрибутами. Коли мова йде про розмір файлів, результати за замовчуванням можуть бути не дуже зрозумілими для користувачів.

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

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

Дія -printf команди у поєднанні з find

За допомогою команди find можна шукати файли за розміром, дозволом, власником, типом, назвою та іншими параметрами. Коли ми застосовуємо іншу команду, а саме -printf, вона виводить інформацію про конкретні знайдені файли. Для того, щоб отримати інформацію про розмір файлу, вам слід застосувати такі специфікатори, як %s.

Ось як повинна виглядати ця команда:

$ find /pathtodirectory -type f -printf "%s %p\n"

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

$ find /pathtodirectory -type f -printf "%k KB %p\n"

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

Команда du в дії

Ще одним чудовим варіантом є використання команди du разом з командою find. Du вже встановлена в усіх системах Linux, тому вам не потрібно витрачати додатковий час на процес встановлення. Ось приклад використання цієї команди:

$ find /pathtodirectory -type f -exec du -h {}+

Тепер давайте спробуємо розібратися, які команди тут були використані. Частина -type f шукає всі файли у визначеному каталозі. -exec виконує наступну команду, символ плюс дозволяє шукати декілька імен файлів, а фігурні дужки використовуються для виведення всіх необхідних даних у вигляді списку.

Для показу всіх файлів у мегабайтах можна також використовувати команду du. Однак у цьому випадку файли, розмір яких менше 1 МБ, будуть показані так, як якщо б вони мали один мегабайт. Командний рядок матиме такий вигляд:

$ find /pathtodirectory -type f -exec du -m {}+

Ви можете використовувати цю команду і отримати достовірні результати лише для файлів розміром 1 МБ і більше.

Якщо вам потрібна така інформація лише про каталоги, ви також можете скористатися цією ж командою. Ось як вона виглядає:

$ find /pathtodirectory -maxdepth 1 -type d -exec du --max-depth=1 -h {}+

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

Визначення розмірів файлів за допомогою ls

Ls - типова команда Linux, яка потрібна для виведення списку каталогів/файлів. Для виведення розмірів файлів у зручному для користувача вигляді можна скористатися наступним рядком:

$ find /pathtodirectory -type f -exec ls -lh {}+

У цій послідовності ls -lh відповідає за показ усіх елементів кожного файлу, включно з характеристиками розміру. Щоб зробити цей рядок більш конкретним і показати розмір у кілобайтах (його також можна використовувати для мегабайтів і байт), скористайтеся наступним прикладом:

$ find /pathtodirectory -type f -exec ls -l --block-size=KB {}+

Якщо вам потрібна більш структурована інформація про розміри файлів, ви можете показати їх у порядку спадання/зростання. Це можна зробити за допомогою наступного рядка:

$ find /pathtodirectory -type f -print0 | xargs -0 ls -lS --block-size=KB

На виході буде показано результати у порядку спадання.

Розширена фільтрація за допомогою grep

Для розширеної фільтрації найчастіше використовується команда grep , за допомогою якої ви можете вибрати потрібний шаблон, і всі показані послідовності будуть містити саме цей шаблон. Для ілюстрації наведемо команду, яка покаже тільки файли, що мають розмір MB:

$ find /pathtodirectory -maxdepth 1 -type f -exec du -h {}+ | grep -E '\b[0-9]+M\b'

У цьому рядку \b використовується як специфічна межа, що означає, що M буде шукатися як частина розміру, але не інакше. Для звуження критеріїв пошуку ви можете скористатися тією ж командою і додати потрібне ключове слово. Рядок має виглядати так:

$ find /pathtodirectory -type f -exec du -h {}+ | grep 'ключове слово'

Сортування та уточнення результатів

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

$ find /pathtodirectory -maxdepth 1 -type f -exec du -h {}+ | sort -h -k1

У цьому рядку, як і в більшості згаданих вище, ми використовуємо du, щоб отримати розміри, зручні для читання. За допомогою характеристики -k1 ми уточнюємо, що фільтрація має відбуватися в залежності від початкового поля кожного рядка. За замовчуванням сортування відбувається за зростанням, але з додаванням -r ви також можете отримати результати за спаданням. Ось як це має виглядати:

$ find /pathtodirectory -maxdepth 1 -type f -exec du -h {}+ | sort -rh -k1

Ми можемо піти ще далі в пошуку і вказати точний розмір файлу, який нам потрібен, або нижче/вище певного діапазону. Наприклад, давайте знайдемо онлайн файли, розмір яких менше 30 МБ:

$ find /pathtodirectory -maxdepth 1 -type f -size -30M -exec du -h {}+

Для пошуку результатів, розмір яких перевищує 30 мегабайт, ви можете просто змінити мінус на плюс. Якщо вам потрібні файли, які мають конкретний розмір, а не більший чи менший, вам просто потрібно прибрати +/- перед числом мегабайт.

Ще одна річ, яку можна зробити за допомогою команди сортування - показати результати у порядку спадання/зростання, це можна зробити, як у наступному рядку:

find /pathtodirectory -maxdepth 1 -type f -size +30k -exec du -h {}+ | sort -h -k1

Підсумки

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

Для отримання більш настроюваних результатів пошуку є кілька хороших варіантів, таких як ls, grep, du та інші. Завдяки використанню зручних для користувача результатів стало набагато простіше отримувати кращу відповідь. У вас є чудова можливість перевірити все, що ви щойно вивчили в теорії, реалізація цих команд не складе труднощів навіть для нових користувачів.

views 55s
views 2
Поділитися

Чи була ця стаття корисною для вас?

Популярні пропозиції VPS

Інші статті на цю тему

Бэкап VPS
Бэкап VPS
cookie

Чи приймаєте ви файли cookie та політику конфіденційності?

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