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