Більшість популярних файлових менеджерів для операційних систем на ядрі Linux мають досить функціональним інструментом пошуку. Однак не завжди присутніх в ньому параметрів вистачає користувачеві для пошуку необхідної інформації. В такому випадку на допомогу приходити стандартна утиліта, запускаються через «Термінал». Вона дозволяє шляхом введення команди, аргументи і опції запросто відшукати необхідні дані в певній директорії або у всій системі.
зміст
Команда find призначена для пошуку різних об'єктів, включаючи файли будь-яких форматів і директорії різної глибини. Від користувача потрібно тільки ввести саму команду, вказати шукане значення і привласнити аргументи, щоб задати параметри фільтрації. Виконання процедури самої утилітою зазвичай не займає багато часу, але це залежить ще від обсягу сканируемой інформації. Тепер же давайте зупинимося на прикладах використання find більш детально.
Для початку хотілося б трохи відступити від основної команди і торкнутися теми додаткових дій, які в майбутньому допоможуть при управлінні з консолі. Справа в тому, що утиліти в дистрибутивах Linux не заточені під пошук всіх, хто знаходиться на комп'ютері елементів. Всі процеси слід запускати тільки з зазначенням повного розташування до елементів або переходити в розташування через команду cd. Зробити це можна досить легко:
cd /home/user/folder
, де user - ім'я домашньої папки користувача, а folder - назва необхідної директорії. Якщо перед тим, як задіяти find, виконати зазначену вище інструкцію, можна не прописувати повний шлях до файлу за умови, що він знаходиться в обраному розташуванні. Таке рішення значно прискорить введення команд в подальшому.
При виконанні find
з тільки що запущеної консолі ви отримаєте результат пошуку в своєму домашньому каталозі активного користувача. В іншому випадку, наприклад, коли здійснюєте активацію під час пошуку по розташуванню, в результатах побачите все підпапки і присутні в них файли цього місця.
Активація find без аргументів і опцій використовується тоді, коли треба переглянути відразу всі елементи. Якщо їх назва повністю не поміщається в рядки, варто змінити команду, щоб вона знайшла вид find . -print
find . -print
.
Команда для відображення файлів через заданий шлях практично не відрізняється від тієї, яку ми згадали вище. Вам так само слід прописати find
, а після додати ./folder
, якщо хочете дізнатися дані про каталог в поточному розташуванні, або ж буде потрібно вказати повний шлях, шляхом введення, наприклад, find ./home/user/downloads/folder
, де folder - кінцева директорія. Кожні елементи будуть виведені окремими рядками в порядку їх глибини.
Іноді виникає необхідність відобразити тільки задовольняють за назвою об'єкти. Тоді користувачеві потрібно задати окрему опцію для команди, щоб вона зрозуміла звернення. Рядок введення знаходить такий вид: find .
-name "word", де word - ключове слово для пошуку, яке обов'язково прописується в подвійних лапках і з урахуванням регістру кожного символу.
Якщо ж ви не знаєте точний реєстр кожної букви або ж бажаєте відобразити всі відповідні назви, не взявши до уваги цей параметр, введіть в консолі find . -iname "word"
find . -iname "word"
.
Для фільтрації результатів за ключовим словом до аргументу -name додається ще один. Команда набуває вигляду find . -not -name "word"
find . -not -name "word"
, де word - слово, яке треба виключити.
Ще часом виникає потреба відшукати об'єкти по одному ключу, виключивши при цьому інший. Тоді по черзі привласнюється відразу кілька опцій пошуку і рядок введення виходить такою: find . -name "word" -not name "*.txt"
find . -name "word" -not name "*.txt"
. Зверніть увагу, що в другому аргументі в лапках вказано «* .txt», а це значить, що find працює не тільки з назвами, але і з форматами файлів, які задаються в такому вигляді.
Існує і оператор АБО. Він дозволяє знайти один або відразу декілька відповідних аргументів. Кожен вказується окремо, з додаванням при цьому відповідних аргументів. У підсумку вийде приблизно наступне: find -name "word" -o -name "word1"
.
Команда find допоможе користувачеві і тоді, коли йому потрібно знайти вміст директорій тільки до зазначеної глибини, наприклад, не потрібно здійснення аналізу всередині третьої папки. Для установки подібних обмежень впишіть find . -maxdepth N -name "word"
find . -maxdepth N -name "word"
, де N - максимальна глибина, а -name «word» - будь-які наступні аргументи.
У багатьох каталогах присутня відразу по кілька папок з різним вмістом. Якщо їх там знаходиться велика кількість, а пошук потрібно здійснити тільки в певних, тоді буде потрібно вказати це при введенні команди find ./folder ./folder1 -type f -name "word"
, де ./folder ./folder1 - перелік відповідних директорій, а -name «word» - інші аргументи.
Без вказівки відповідного аргументу приховані об'єкти, що знаходяться в сканованих каталогах, відображатися в консолі не будуть. Тому користувач вручну прописує додаткову опцію, щоб в результаті команда була такою: find ~ -type f -name ".*"
. Ви отримаєте повний список всіх файлів, але якщо ж до деяких з них немає доступу, перед словом find в рядку пропишіть sudo
, щоб активувати права суперкористувача.
Кожен користувач може створювати необмежену кількість каталогів і об'єктів в різних розташуваннях. Швидше за все знайти ту інформацію, яка належить одному з користувачів, за допомогою команди find і одного з її аргументів. У «Терміналі» пропишіть find . -user username
find . -user username
, де username - ім'я користувача. Після введення сканування запускається автоматично.
Приблизно така ж схема працює і з групами користувачів. Запуск аналізу файлів, пов'язаних з однією з груп, відбувається через find /var/www -group groupname
. Не забувайте, що об'єктів може бути велика кількість і на виведення їх усіх іноді йде багато часу.
Операційна система автоматично зберігає інформацію про дату зміни кожного існуючого файлу. Команда find дозволяє знайти їх все за вказаною параметру. Потрібно лише прописати sudo find / -mtime N
, де N - кількість днів назад, коли об'єкт був змінений останній раз. Приставка sudo тут потрібна для того, щоб отримати дані і про файлах, призначених тільки для суперкористувача.
Якщо ж вас цікавить перегляд елементів, які останній раз відкривалися певну кількість днів назад, тоді рядок трохи змінює свій вигляд на sudo find / -atime N
.
Кожен об'єкт має свій розмір, відповідно, команда для пошуку файлів повинна володіти функцією, що дозволяє фільтрувати їх за цим параметром. find вміє це робити, користувачеві необхідно лише задати сам розмір через аргумент. Досить ввести find / -size N
, де N - обсяг в байтах, мегабайтах (M) або гігабайтах (G).
Вказати можна і діапазон шуканих елементів. Тоді в команду вписуються визначники і вийде, наприклад, такий рядок: find / -size +500M -size -1000M
. Такий аналіз буде відображати файли більше 500 мегабайтів, але менше 1000.
Деякі з файлів або папок бувають порожні. Вони просто займають зайвий простір на диску і іноді заважають нормально взаємодіяти з комп'ютером. Їх слід знайти, щоб визначитися з подальшими діями, а в цьому допоможе find /folder -type f -empty
, де / folder - місце, де здійснюється сканування.
Окремо хотілося б коротенько відзначити інші корисні аргументи, які час від часу стають корисними для користувача:
-mount
- обмеження тільки на поточну файлову систему; -type f
- відображати тільки файли; -type d
- показувати тільки директорії; -nogroup
, -nouser
- пошук файлів, які не належать до жодної групи або не належать користувачу; -version
- дізнатися версію використовуваної утиліти. На цьому ознайомлення з командою find закінчено. Якщо бажаєте детально вивчити інші стандартні консольні інструменти операційних систем на ядрі Лінукс, радимо звернутися до окремого нашого матеріалу за наступним посиланням.
Детальніше: Часто використовувані команди в «Терміналі» Linux
Після пошуку необхідної інформації ви можете здійснювати з ними будь-які інші дії, наприклад, редагування, видалення або вивчення вмісту. У цьому допоможуть інші вбудовані утиліти «Терміналу». Приклади їх використання знайдете далі.