2.11.3. Пошук файлів і каталогів через консоль
Через консоль за допомогою утиліти find можна шукати файли та каталоги за різними критеріями. У командах замість крапки . можна вказувати шлях до конкретного каталогу, всередині якого потрібно виконувати пошук.
За назвою
Для пошуку всіх файлів і каталогів за назвою (без урахування регістру) в поточному каталозі та всіх його підкаталогах використовуйте команду:
find . -iname NAME
У команді замініть NAME на назву шуканого файлу або каталогу.
За розширенням
Для пошуку всіх файлів з розширенням .php (без урахування регістру) в поточному каталозі та всіх його підкаталогах використовуйте команду:
find . -iname '*.php'
За розміром
Для пошуку всіх файлів розміром 1234 байти в поточному каталозі та всіх його підкаталогах використовуйте команду:
find . -size 1234
Для пошуку всіх файлів розміром понад 1000 КБ у поточному каталозі та всіх його підкаталогах використовуйте команду:
find . -size +1000k
Для пошуку всіх файлів розміром менше 500 Б у поточному каталозі та всіх його підкаталогах використовуйте команду:
find . -size -500b
Розмір можна вказувати в різних форматах: 10 — байти, 10k — КБ, 10M — МБ, 10G — ГБ.
За часом зміни
Для пошуку всіх файлів і каталогів, змінених за останні 24 години, в поточному каталозі та всіх його підкаталогах використовуйте команду:
find . -mtime 1
Для пошуку всіх файлів і каталогів, змінених за останні 15 хвилин, у поточному каталозі та всіх його підкаталогах використовуйте команду:
find . -mmin 15
Для пошуку всіх файлів і каталогів, змінених від 5 до 10 днів тому, в поточному каталозі і всіх його підкаталогах використовуйте команду:
find . -mtime 5 -mtime -10 -daystart
За наявністю фрагмента рядка
Для пошуку всіх файлів з розширенням env, php, xml, yml або ini, що містять вказаний фрагмент рядка, в поточному каталозі та всіх його підкаталогах використовуйте команду:
find ./ -type f -regex ".*\.\(env\|php\|xml\|yml\|ini\)" -exec grep -i -H "STRING" {} \;
У команді замініть STRING на шуканий текст.
Для пошуку по всіх файлах у всіх каталогах рекурсивно використовуйте команду:
grep -rn "STRING" ~/
За хешем
Увага!
При великій кількості файлів команда може виконуватися дуже довго та створювати навантаження на CPU. Щоб скоротити час пошуку та зменшити навантаження, рекомендується додавати до команди додаткові критерії пошуку (назву, розширення, розмір, час зміни).Для пошуку всіх файлів з певним хешем MD5 у поточному каталозі та всіх його підкаталогах використовуйте команду:
find . -type f -exec bash -c 'md5sum "$0" | grep -q 9b61e2f2ada7456e9d4634ce3b73ba68 && echo $0' {} \;
У команді замість 9b61e2f2ada7456e9d4634ce3b73ba68 використовуйте хеш файлу, який вам потрібно знайти.