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