Команда find
у Linux - це інструмент для пошуку файлів і директорій у файловій системі на основі різних критеріїв, таких як ім’я файлу, тип, розмір, права доступу, час зміни тощо. Вона підтримує безліч опцій і параметрів, які дозволяють виконувати складні запити для пошуку.
Загальний синтаксис
find [шлях] [параметри] [умови] [дії]
шлях
: Вказує початковий каталог для пошуку. Може бути один або кілька шляхів. Якщо шлях не вказаний, пошук виконується в поточному каталозі.параметри
: Опції, які налаштовують поведінку командиfind
(наприклад, обмеження глибини пошуку).умови
: Критерії, які визначають, що саме шукати (наприклад, ім’я файлу, тип файлу, розмір, права доступу тощо).дії
: Операції, які будуть виконані над знайденими файлами (наприклад, відображення на екрані, видалення, копіювання тощо).
Основні параметри та опції
-
-name: Пошук файлів за іменем. Використовує символи підстановки (
*
,?
,[]
).find /path/to/search -name "filename.txt"
-
-iname: Те саме, що й
-name
, але без урахування регістру.find /path/to/search -iname "filename.txt"
-
-type: Пошук за типом файлу. Тип може бути:
f
: звичайний файл.d
: директорія.l
: символічне посилання.c
: спеціальний символ.b
: спеціальний блок.p
: іменований канал (FIFO).s
: сокет.
find /path/to/search -type f
-
-size: Пошук файлів за розміром. Формати розміру:
c
: байти.k
: кілобайти.M
: мегабайти.G
: гігабайти.+
: більше зазначеного розміру.-
: менше зазначеного розміру.
find /path/to/search -size +10M
-
-mtime, -atime, -ctime: Пошук за часом зміни (
-mtime
), доступу (-atime
) або зміни атрибутів (-ctime
). Вимірюється в днях.-mtime -n
: змінювались менше ніж n днів тому.-mtime +n
: змінювались більше ніж n днів тому.-mtime n
: змінювались рівно n днів тому.
find /path/to/search -mtime -7
-
-perm: Пошук за правами доступу.
find /path/to/search -perm 644
-
-user, -group: Пошук файлів, що належать конкретному користувачу або групі.
find /path/to/search -user username
-
-exec: Виконання команди над кожним знайденим файлом.
{}
замінюється на ім’я файлу,\;
вказує на кінець команди.find /path/to/search -name "*.log" -exec rm {} \;
-
-maxdepth і -mindepth: Обмеження глибини пошуку.
-maxdepth n
: обмежує пошук до n рівнів каталогів.-mindepth n
: починає пошук з n рівня каталогів.
find /path/to/search -maxdepth 2 -name "*.txt"
-
-prune: Виключає певні каталоги з пошуку.
find /path/to/search -path "/path/to/search/exclude_dir" -prune -o -name "*.txt" -print
Приклади використання
-
Пошук файлів з певним розширенням:
find /home/user/Documents -name "*.pdf"
-
Пошук файлів, змінених за останні 2 дні:
find /var/log -mtime -2
-
Пошук файлів розміром більше 100 МБ і їх видалення:
find /home/user/Videos -size +100M -exec rm {} \;
-
Пошук усіх порожніх файлів:
find /path/to/search -type f -empty
-
Пошук усіх директорій з правами 755:
find /path/to/search -type d -perm 755
Висновок
Команда find
є найбільш використовуваних команд у Linux. Вона дозволяє виконувати пошук за різними параметрами і виконувати дії над знайденими файлами, що робить її незамінним інструментом для адміністраторів систем і звичайних користувачів.