====== Find ======
**find** папка параметри критерій шаблон дія
==== Параметри ====
* **-P** – ніколи не відкривати символічні посилання.
* **-L** – отримує інформацію про файли за символічними посиланнями. Важливо для подальшої обробки, щоб оброблялося не посилання, а сам файл.
* **-d (-maxdepth**) – максимальна глибина пошуку за підкаталогами, для пошуку тільки в поточному каталозі встановіть 1.
* **-depth** – шукати спочатку в поточному каталозі, а потім у підкаталогах.
-**mount **– шукати файли тільки в цій файловій системі.
* **-version** – показати версію утиліти find.
* **-print** – виводити повні імена файлів.
* **-type f** – шукати тільки файли.
* **-type d** – пошук папки в Linux.
==== Критерії ====
*
-**name** – пошук файлів за іменем.
*
-**perm** – пошук файлів у Linux за режимом доступу.
*
-**user** – пошук файлів за власником.
*
-**group** – пошук за групою.
*
-**mtime** – пошук за часом модифікації файлу.
*
-**atime** – пошук файлів за датою останнього читання.
*
-**nogroup** – пошук файлів, що не належать до жодної групи.
*
-**nouser** – пошук файлів без власників.
*
-**newer** – знайти файли новіші за вказаний.
*
-**size** – пошук файлів у Linux за їхнім розміром.
==== Приклади ====
find .
=== Пошук файлів у певній папці ===
Показати всі файли в зазначеній директорії:
find ./Изображения
Шукати файли за іменем у поточній папці:
find . -name "*.png
Не враховувати регістр під час пошуку за ім’ям:
find . -iname "TeStFile*"
=== Обмеження глибини пошуку ===
Пошук файлів на ім’я в Linux тільки в цій папці:
find . -maxdepth 1 -name "*.php"
=== Інвертування шаблону ===
Знайти файли, які не відповідають шаблону:
find . -not -name "test*"
=== Кілька критеріїв ===
Пошук командою **find** в Linux за кількома критеріями, з оператором виключення:
find . -name "test" -not -name "*.php"
Знайде всі файли, що починаються на test, але без розширення **php**. А тепер розглянемо оператор АБО:
find -name ".html" -o -name ".php"
Ця команда знайде як **php**, так і **html** файли.
==== Тип файлу ====
За замовчуванням **find** шукає як каталоги, так і файли. Якщо вам необхідно знайти тільки каталоги, використовуйте критерій type з параметром d. Наприклад:
find . -type d -name "Загрузки"
Для пошуку тільки файлів необхідно використовувати параметр **f**:
find . -type f -name "Загрузки"
=== Кілька каталогів ===
find ./test ./test2 -type f -name "*.c"
=== Пошук прихованих файлів ===
Знайти приховані файли тільки в поточній папці. Імена прихованих файлів у Linux починаються з крапки:
find . -maxdepth 1 -type f -name ".*"
=== Пошук за дозволами ===
Найти файлы с опреЗнайти файли з певною маскою прав, наприклад, 0664:деленной маской прав, например, 0664:
find . -type f -perm 0664
Права також можна задавати буквами для u (user) g (group) і o (other). Наприклад, для того щоб знайти всі файли зі встановленим прапором Suid у каталозі /usr, виконайте:
sudo find /usr -type f -perm /u=s
Пошук файлів доступних власнику тільки для читання тільки в каталозі /etc:
find /etc -maxdepth 1 -perm /u=r
Знайти тільки виконувані файли:
find /bin -maxdepth 2 -perm /a=x
=== Пошук файлів у групах і користувачах ===
Знайти всі файли, що належать користувачеві:
find . -user sergiy
Пошук файлів у Linux, що належать групі:
find /var/www -group www-data
=== Пошук за датою модифікації ===
Пошук файлів за датою в Linux здійснюється за допомогою параметра mtime. Знайти всі файли модифіковані 50 днів тому:
find / -mtime 50
Пошук файлів у Linux відкритих N днів тому:
find / -atime 50
=== Знайти всі файли, модифіковані між 50 і 100 днів тому: ===
find / -mtime +50 -mtime -100
=== Знайти файли змінені протягом години: ===
find . -cmin 60
=== Пошук файлів за розміром ===
Знайти всі файли розміром 50 мегабайт:
find / -size 50M
Від п’ятдесяти до ста мегабайт:
find / -size +50M -size -100M
=== Знайти найменші файли: ===
find . -type f -exec ls -s {} ; | sort -n -r | head -5
=== Знайти найбільші: ===
find . -type f -exec ls -s {} ; | sort -n | head -5
=== Пошук порожніх файлів і папок ===
find /tmp -type f -empty
find ~/ -type d -empty
==== Дії зі знайденими файлами ====
Для виконання довільних команд для знайдених файлів використовується опція -exec. Наприклад, для того щоб знайти всі порожні папки та файли, а потім виконати ls для отримання детальної інформації про кожен файл використовуйте:
find . -empty -exec ls -ld {} ;
Видалити всі текстові файли в **tmp**
find /tmp -type f -name "*.txt" -exec rm -f {} ;
Видалити всі файли понад **100** мегабайт:
find /home/bob/dir -type f -name *.log -size +100M -exec rm -f {} ;