Команда find в Linux використовується для пошуку файлів і каталогів у заданих директоріях на основі різних критеріїв. Ця команда є однією з найпотужніших і найпоширеніших утиліт у Linux.
Основний формат команди find має такий вигляд:
find [path] [expression]
де:
path
- це шлях до директорії, в якій потрібно виконати пошук файлів (за замовчуванням, пошук проводиться в поточній директорії та всіх її піддиректоріях);
expression
- це вираз, який визначає критерії пошуку файлів.
Далі наведено деякі найпоширеніші критерії пошуку файлів, які можуть бути використані у виразі команди find:
-name
: пошук файлів за іменем. Наприклад:
find /home/user -name myfile.txt
-type
: пошук файлів певного типу (наприклад, f
для звичайних файлів або d
для директорій). Наприклад:
find /home/user -type f
-size
: пошук файлів за розміром. Наприклад:
find /home/user -size +10M
-mtime
: пошук файлів за часом останньої модифікації. Наприклад:
find /home/user -mtime -7
-user
і -group
: пошук файлів за власником і групою. Наприклад:
find /home/user -user bob -group users
Ви можете використовувати логічні оператори -and
, -or
і -not
, щоб об'єднувати кілька критеріїв пошуку в один вираз.
Наприклад, наступна команда знайде всі файли в директорії /home/user
, які були змінені за останні 7 днів і мають розмір понад 10 мегабайт:
find /home/user -type f -mtime -7 -size +10M
Команда find також дозволяє виконати різні дії зі знайденими файлами, використовуючи опцію -exec
. Наприклад, ви можете видалити всі файли, які були змінені понад 30 днів тому, за допомогою такої команди:
find /home/user -type f -mtime +30 -exec rm {} ;
Тут опція -exec
запускає команду rm
для кожного знайденого файлу і використовує {}
для заміни імені файлу в команді.
Команда find
- це потужний інструмент для пошуку файлів і каталогів у Linux, який можна використовувати для виконання різних завдань, пов'язаних з управлінням.
команда find
підтримує безліч інших опцій, які можуть бути використані для більш точного пошуку файлів:
-iname
: пошук файлів за іменем без урахування регістру символів. Наприклад:
find /home/user -iname myfile.txt
-regex
: пошук файлів, чиї імена відповідають заданому регулярному виразу. Наприклад:
find /home/user -regex ".*.txt$"
-maxdepth
і -mindepth
: обмеження глибини пошуку файлів у піддиректоріях. Наприклад:
find /home/user -maxdepth 2 -type f
-prune
: виключення певних директорій із пошуку. Наприклад:
find /home/user -path /home/user/excluded -prune -o -type f -print
-print
: виведення списку знайдених файлів у стандартний вивід. Наприклад:
find /home/user -type f -print
find
також підтримує пошук файлів за різними атрибутами, такими як права доступу, атрибути файлів, мітки SELinux
та інші. Детальнішу інформацію про ці опції можна знайти в документації команди find
.
Команда може виконувати пошук файлів і каталогів у всій файловій системі, що може зайняти багато часу і ресурсів. Тому важливо бути обережним під час використання цієї команди і переконатися, що критерії пошуку задано правильно, щоб уникнути пошуку непотрібних файлів або помилок у системі.