6.4.7 Поиск с помощью find

Команда find является хорошим инструментом для поиска файлов и директорий в Unix-подобных операционных системах. Она позволяет пользователям осуществлять сложные поисковые операции, основываясь на различных критериях, таких как имя файла, размер, дата модификации, права доступа и многое другое.
Использование find может значительно упростить многие задачи системного администрирования и управления файлами. Например, Вы можете быстро найти все файлы определенного типа, удалить старые файлы, изменить права доступа для группы файлов или даже выполнить команду для каждого найденного файла.
Важное примечание:
хотя команда find чрезвычайно полезна, она также может быть потенциально опасной при неправильном использовании. Будьте особенно осторожны при работе с системными файлами или при выполнении операций, которые могут изменить или удалить данные.
Рекомендуется сначала тестировать команды на небольшом наборе файлов или использовать опцию -print для проверки результатов перед выполнением любых деструктивных действий. Также стоит создавать резервные копии важных данных перед массовыми операциями с файлами.
Основные операции поиска
Для начала Вам нужно подключиться к серверу с помощью терминала SSH. Если Вы не знакомы с процессом подключения через SSH, рекомендуем ознакомиться с нашей подробной инструкцией по указанной ссылке.
После успешного подключения Вы получите доступ к командной строке сервера. Именно в ней Вы сможете использовать команду find для поиска файлов и папок. Эта команда чрезвычайно гибкая и позволяет осуществлять поиск по различным критериям.
Поиск файлов по имени
- 
Поиск файлов по имени: Объяснение: команды ищут файл report.txtили все файлы с расширением.txtв директории/home/user/documents/.- find /home/user/documents/ -name "report.txt"
 - find /home/user/documents/ -name "*.txt"
 
- 
Поиск без учета регистра: Объяснение: команда ищет файл project.confв директории/home/user/projects/, игнорируя регистр букв.- find /home/user/projects/ -iname project.conf
 
Примечание: поиск в системных директориях может требовать прав администратора (root).
Поиск по размеру файлов
- 
Поиск по размеру файлов: Объяснение: команда находит все файлы размером более 10 мегабайтв директории/home/user/downloads/.- find /home/user/downloads/ -size +10M
 
Поиск по правам доступа
- 
Поиск по маске прав: Объяснение: команда находит все файлы с правами доступа 700 (чтение, запись и выполнение только для владельца) в директории /home/user/scripts/.- find /home/user/scripts/ -perm 700
 
Поиск по дате модификации
- 
Поиск по дате файлов, созданных или измененных в течение последних 5 дней: Объяснение: команда находит файлы, созданные или измененные в течение последних 5 днейв директории/home/user/documents/.- find /home/user/documents/ -type f -mtime -5
 
- 
Файлы, созданные или измененные в течение последних 5 минут: Объяснение: команда находит файлы, созданные или измененные в течение последних 5 минутв директории/home/user/temp/.- find /home/user/temp/ -type f -mmin -5
 
- 
Найти файлы, созданные или измененные более 30 дней назад (поиск устаревших файлов): Объяснение: команда находит файлы, которые не изменялись более 30 днейв директории/home/user/archives/.- find /home/user/archives/ -type f -mtime +30
 
- 
Удалить созданные или измененные файлы старше 30 дней: Объяснение: команда удаляет файлы, которые не изменялись более 30 днейв директории/home/user/temp/.- find /home/user/temp/ -type f -mtime +30 -delete
 
Внимание: удаление файлов является необратимой операцией. Будьте осторожны при использовании опции -delete.
- 
Время последнего обращения к которым более 5 дней: Объяснение: команда находит файлы, к которым не обращались более 5 днейв директории/home/user/logs/.- find /home/user/logs/ -type f -atime +5
 
Поиск по содержимому
- 
Поиск строки в файлах: Объяснение: команда ищет слово TODO(без учета регистра) во всех файлах в директории/home/user/projects/.- find /home/user/projects/ -type f -exec grep -i -H "TODO" {} \;
 
- 
Найти все файлы php, в которых встречается строка STRING: Объяснение: команда ищет слово STRINGво всех PHP файлах в директории/var/www/html/.- find /var/www/html/ -type f -name "*.php" -exec grep -i -H "STRING" {} \;
 
- 
Также можно использовать команду grep с опцией -Rдля поиска файлов по содержимому:Объяснение: команда рекурсивно ищет STRINGво всех файлах в директории/home/user/documents/.- grep "STRING" -R /home/user/documents/
 
Замена текста в файлах
- 
Замена текста в файлах: Объяснение: команда заменяет все вхождения old_serverнаnew_serverво всех.confфайлах в директории/home/user/configs/.- find /home/user/configs/ -type f -name "*.conf" -exec sed -i 's/old_server/new_server/g' {} \;
 
Важно: будьте осторожны при использовании этой команды, поскольку она изменяет содержимое файлов.
Изменение прав доступа
- 
Массовое изменение прав доступа, установка прав доступа 644 на все файлы в текущей директории и всех поддиректориях: Объяснение: команда устанавливает права доступа 644 на все файлы в директории /home/user/public_html/и ее поддиректориях.- find /home/user/public_html/ -type f -exec chmod 644 {} \;
 
- 
Установка прав доступа 755 на все папки в текущей директории и всех поддиректориях: Объяснение: команда устанавливает права доступа 755 на все директории в /home/user/public_html/и ее поддиректориях.- find /home/user/public_html/ -type d -exec chmod 755 {} \;
 
Сложные операции поиска
- 
Поиск всех файлов html, содержащих код: 0; URL = httpи установка для них всех прав 000 (полезно для поиска вредоносного кода):Объяснение: команда ищет HTML файлы, которые содержат потенциально вредоносный код перенаправления, и изменяет их права доступа на 000. - find /var/www/html/ -type f -name "*.html" -exec grep -i -H "0;URL=http" {} \; -exec chmod -R 000 {} \;
 
- 
Поиск всех php файлов в указанном каталоге wp-content/uploadsдо 3-х вложений всех пользователей всех сайтов сервера и установка им всем прав 000:Объяснение: команда находит все PHP файлы в директориях загрузок WordPress и изменяет их права доступа на 000, что может быть полезным для безопасности. - find /var/www/*/wp-content/uploads/*/*/*.php -exec chmod -R 000 {} \;
 
Примечание: большинство команд требуют прав администратора (root) для выполнения. Также, будьте осторожны при изменении прав доступа к файлам. Ошибочное изменение прав на системные директории может повредить работоспособность ОС.


