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

Синтаксис команди find:

find шлях –опції

В якості шляху вказується директорія, в якій необхідно здійснювати пошук. Наприклад, це можуть бути значення такого виду:
. – поточний каталог
/ — кореневий каталог
~ — домашній каталог

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

Основні опції:
-name — пошук по імені, задається шаблон пошуку;
-user — пошук файлів належать конкретному користувачу;
-group — пошук файлів належать конкретній групі;
-perm — пошук файлів за режимом доступу;
-type — пошук файлів за типом, список типів:

  • b — спеціальний блоковий файл;
  • d — каталог;
  • c — спеціальний символьний файл;
  • f — звичайний файл;
  • l — символічна посилання;
  • p — іменований канал;
  • s — сокет.

-size n — пошук файлів з розміром n одиниць;
-mtime -n +n — пошук файлів за датою зміни, менше ( – ) ( + ) днів тому.

Спробуємо здійснити пошук файлів, імітуючи різні ситуації.
Знайдемо файли на знімному пристрої, підключеному до USB, і попередньо змонтованому в системі.

Пошук файлів по розширенню:

$ find /mnt/usb -name “*.mp3” -print

В результаті виконання цієї команди буде проведений пошук в каталозі /mnt/usb – це каталог, в який змонтовано пристрій. Пошук буде проведено по всіх файлів (*), що мають розширення .mp3.
Маску пошуку можна міняти досить гнучко, наприклад, можна задати ключове слово, з якого починається ім’я файлу, і робити по ним пошук.

Пошук файлів по початковому ключовому слову:

$ find ~ -name “config*” –print

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

Пошук файлів за шаблоном регулярного виразу:

$ find / -name “[a-j]*” –print

Згідно з вказаним шаблоном буде проведений пошук по всіх файлів в системі, що починаються з літер від «a» до «j».

Кожен більш-менш знайомий з системами Linux знає, що режими доступу до файлів справа дуже важлива. Іноді буває потрібно знайти файли, що мають задані конкретні права, для цих цілей можна скористатися пошуком з опцією –perm.

Пошук файлів за режимом доступу 755:

$ find . -perm 775 –print

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

Пошук файлів з правами для групи:

$ find . -perm -070 –print

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

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

Пошук файлів певного користувача:

$ find / -user admin –print

В результаті пошуку буде знайдено файли належать користувачу admin.

Пошук файлів, що належать певній групі користувачів:

$ find / -group bots –print

Будуть знайдені файли, які належать групі користувачів bots. Крім цього можна проводити пошук файлів, власниками яких є неіснуючі користувачі або групи:

$ find / -nouser –print
$ find / -nogroup –print

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

Пошук символічних посилань:

$ find /etc -type l –print

Пошук буде проведено в директорії /etc, в якій будуть відбиратися всі символічні посилання.

Буває необхідно переглянути список вкладених директорій, в якому або каталозі, для таких завдань є наступна команда.

Перегляд вкладених директорій в каталозі:

$ find /mnt/usb type d –print

На екран буде показаний список директорій присутніх в каталозі /mnt/usb. Тепер перейдемо до наступної опції, це можливість пошуку файлів встановленого розміру.

Пошук файлів за розміром:

$ find . -size 2000k –print

Буде проведений пошук файлів розміром 2000 кілобайт, розміри можна вказувати і в мегабайтах, для цього замість літери «k» слід вказати літеру «M».

В якості такого прикладу ми будемо використовувати можливість пошуку файлів з часу його модифікації. Для цих цілей ми скористаємося опцією –mtime.

Пошук файлів, змінених за останні 2 дні:

$ find /var/www/html -mtime +2 –print

Пошук буде проводитися в каталозі /var/www/html, і будуть шукатися файли які змінювалися протягом останніх 2-х днів. Мабуть, одна з важливих і зручних опцій пошуку. Так само можна здійснювати пошук по даті модифікації з зворотним умовою. Давайте спробує знайти файли в директорії, які не змінювалися протягом 5-ти днів.

Пошук файлів, не изменявшихся протягом 5-ти днів:

$ find /var/www/html -5 –print

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

Додав: htmaker, 22.09.2015 р.
(Ще не оцінили)

Завантаження…

Діліться з друзями:

См. також:


Оновлення пакетів в CentOS
Рубрика: Linux

Bash: mail: command not found
Рубрика: Linux

Виставляємо тимчасову зону в CentOS 7
Рубрика: Linux

Налаштування SELinux, включення, відключення
Рубрика: Linux, Інф. безпека

Змінюємо пароль root в MySQL 5.7
Рубрика: Linux, MySQL

Установка і настройка mSMTP на Linux
Рубрика: Linux

Установка GIT на CentOS 7
Рубрика: Linux

Як відключити IPv6 в CentOS 7?
Рубрика: Linux

Ротація логів в Linux
Рубрика: Apache, Linux