====== 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 {} ;