Команди та утиліти пошуку по файловій системі з Linux

03.07.2020 3141 на прочитання 4 хвилини

Для зручного пошуку потрібної інформації в системі з Linux існує безліч способів. У цій статті розглянемо, як знайти необхідні вам файли безпосередньо через термінал. Виконати цю функцію можна за допомогою спеціальних команд, таких як locate, whereis, which і найпопулярніша серед них find.

Утиліта find

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

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

Утиліта має наступний загальний синтаксис:

find [options] [path] [expression]

  • options - додаткові параметри установки виконання команди;
  • path - визначає початковий каталог, з якого буде виконуватися пошук;
  • expression - умови, шаблони здійснення пошуку.

Основні опції:

    -name - пошук файлу по його імені (з урахуванням регістру символів);

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

      -name newfile - має назву newfile;

      -name 'newfile *' - назва файлу починається з newfile (наприклад newfile2);

      -name 'newfile ??' - назва починається з newfile, після якого йде ще 2 символи;

       -name 'newfile ?? *' - назва починається з newfile, після якого йде ще 2 або більше символів;

       -name '* newfile *' - файли, які містять в своїй назві слово newfile.

 -iname - пошук по імені без урахування регістру;

-type - вказівка ​​типу файлу:

    f - простий файл;

    d - директорія (папка);

     l - символічне посилання;

     c - файл символьного пристрою;

     b - файл блочного пристрою;

     s - файл локального сокета;

     p - канал.

-user - пошук файлу по зазначеному власникові;

-group - пошук по групі користувачів;

-perm - за встановленими правами доступу;

-size - сортування за розміром файлу, використовується з операторами + і -, де:

    + - файли більше встановленого значення;

    - - файли менше встановленого значення.

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

-mmin - аналогічна до -mtime, але значення вже задається в хвилинах.

-atime - за останньою датою відкриття;

-name '* .php' або ж '* .txt' - вибірка за встановленим розширенням файлу;

-name '. *' - пошук прихованих файлів;

-empty - пошук порожніх файлів.

Сам шлях можна прописати, починаючи з символів так:

       . - пошук в поточному каталозі;

       / - пошук в встановленому каталозі;

      ~ - пошук в домашній директорії.

Наведемо кілька практичних прикладів:

Приклад 1. Виконаємо пошук за назвою файлу, який містить в собі слово test в домашній директорії.

find ~ -name '*test*'

Результат виконання команди:

[mar***@cp*nl ~]$ find ~ -name '*test*'
/home/mar***t/test1.txt
/home/mar***/test2.txt
/home/mar***/newtest

Приклад 2. Виконаємо пошук за назвою файлу, який містить в собі слово test в домашній директорії, але вже з розширенням .txt.

find ~ -name '* test *' -name '* .txt'

Результат виконання команди:

[mar *** t @ cp * nl ~] $ find ~ -name '* test *' -name '* .txt'
/home/mar***t/test1.txt
/home/mar***/test2.txt

Приклад 3. Виконаємо пошук по назві файлу, який починається з слова orders і має розмір менше 10 байт в папках newdata і sale.

find / home / mar *** / sale / home / gmar *** / newdata -name 'orders *' -size -10b

Результат виконання команди:

[mar *** t @ cp * nl ~] $ find / home / mar *** / sale / home / mar *** / newdata -name 'orders *' -size -10b
/home/mar***t/sale/formounth/orders2.txt
/home/mar***t/sale/orders.txt
/home/mar***/newdata/ordersnew.txt

Команда ГіперХост, як завжди, бажає продуктивної роботи, ну і, звичайно, вдалих пошуків.


Close Screen
Maria Kholodnitska
Статей: 220
Оцініть статтю:


Дякую за відгук
Рейтинг: 5 з 5 Голосів: 2