Термінал у Linux є основним додатком для виконання задач, включаючи пошук файлів. У цьому вам допоможе використання команди find, з якою ви можете знаходити файли і каталоги в файловій системі Linux.
Для початку створіть тестову папку, яка містить тестові файли. Після створення тестового каталогу і файлів переконайтеся, що файли були створені за допомогою ls.
mkdir test
cd test
touch test1.txt test2.h test3.c TEST.f
ls
Пошук файлу в Linux
Скористаємося командою find , щоб в каталозі test знайти файл з ім’ям test1.txt. Використання find з “.” вказує, що пошук повинен бути обмежений поточним робочим каталогом. Після виконання команди find ви повинні побачити test1.txt файл, вказаний в результаті.
find . -name test1.txt
Пошук по частковому імені файлу в Linux
Іноді може знадобитися виконати пошук з використанням неповних імен файлів або каталогів.
В каталозі test виконайте наступну команду для пошуку файлів, які містять літери “tes” у своїй назві.
find . -name “*tes*”
У списку результатів ви повинні побачити, що всі файли були знайдені і перераховані, крім TEST.f , це пов’язано з тим, що -name повертає результати з урахуванням регістра.
Повторіть команду пошуку певного розширення файлу. Ми можемо використовувати той же самий метод для пошуку певного типу файлу. Зміна команди на пошук “*.txt*” поверне тільки тип файлу .txt.
find . -name “*.txt*”
Використовуйте -iname для повернення результатів без урахування регістру. Тут ми знову використовуємо неповний пошуковий запит “*tes *” , але використання -iname змушує команду відображати всі результати незалежно від верхнього або нижнього регістру. Тому результати включають наш файл TEST.f .
find . -iname “*tes*”
Відмінність між каталогами та файлами в Linux
У своїй стандартній формі команда find поверне будь-який збіг, незалежно від того, чи це файл або каталог. Можна додати теги до команди find, які змусять команду повертати тільки файли або повертати результати пошуку в каталозі.
Додайте каталог всередині нашого тестового каталогу під назвою test2. Використовуйте ls для підтвердження створення каталогу.
cd test
mkdir test2
ls
Запустіть команду find , яка поверне результати як по файлу, так і по каталогу. Ви повинні побачити, що результат містить всі тестові файли, а також каталог test2.
find . -iname “*test*”
Додайте тег типу f , щоб повертати тільки результати з файлу. Зверніть увагу, що в результаті каталог test2 пропущений.
find . -iname “*test*” -type f
Додайте тег -type d, щоб повертати результати тільки каталогів. Зверніть увагу, що єдиним результатом тепер має бути каталог test2 .
find . -iname “*test*” -type d
Пошук по всій файловій системі Linux
Можливо, вам доведеться обшукати всю файлову систему, щоб спробувати знайти файл.
Виконайте пошук test1.txt файлів у кореневому каталозі (/) файлової системи. Цей крок доданий для ілюстрації поширеної проблеми.
cd
find / -iname test1.txt
Ви виявите, що у вас немає дозволу на доступ до диску в багатьох папках. Зверніть увагу, що в цьому прикладі ми використовуємо / , щоб включити команду для пошуку у всіх підкаталогах.
Повторіть попередній пошук, але використовуйте sudo для виконання пошуку з рут-правами (root). Це один з найвищих рівнів прав доступу до файлів та папок.
sudo find / -iname test1.txt
Тепер ви можете шукати будь-який файл в будь-якому місці вашої системи, навіть якщо ви знаєте тільки частину його назви.