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

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

07.06.2024
Автор: HostZealot Team
2 мін.
65

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 та інші. Завдяки використанню зручних для користувача результатів стало набагато простіше отримувати кращу відповідь. У вас є чудова можливість перевірити все, що ви щойно вивчили в теорії, реалізація цих команд не складе труднощів навіть для нових користувачів.

# VPS Поділитися:
Статті за темою