Очень часто на хостинге приходится прибегать к массовой работе с файлами — поиск и удаление, корректировка прав, корректировка владельца, поиск файлов нужного размера и работа с ними. В таких случаях всегда выручает find, с его помощью такие операции автоматизируются и выполняются легко. В заметке несколько примеров применения find при работе с большим количеством файлов и директорий:
Изменить права на файлы и директории:
find ./dir/ -type d -exec chmod 0755 {} \; find ./dir/ -type f -exec chmod 0644 {} \;
Найти все файлы с правами отличными от 644, директории с правами отличными от 755 и дать им эти права:
find ./dir/ -type f ! -perm 644 -print -exec chmod 0644 {} \; find ./dir/ -type d ! -perm 755 -print -exec chmod 0755 {} \;
Удалить все .php файлы в указанной, и вложенных в неё директориях:
find ./dir/ -type f -name "*.php" -exec rm -f {} \;
Найти все .c, .sh, .py файлы:
find ./dir/ -type f \( -name "*.c" -o -name "*.sh" -o -name "*.py" \)
Найти все php скрипты, в которых встречается вхождение «base64»:
find ./dir/ -type f -name "*.php" -exec grep -l base64 {} \;
Найти пустые файлы и директории:
find ./dir/ -type f -empty find ./dir/ -type d -empty
Найти все файлы пользователя petya и сменить их владельца на пользователя vasya:
find ./dir/ -type f -user petya -exec chown vasya {} \;
Найти все файлы пользователя petya, модифицированные в последний час:
find ./dir/ -type f -user petya -mmin -60
Найти все .mov файлы пользователя vasya размером более 1Гб и перенести их в директорию /storage
find ./dir/ -type f -user vasya -name "*.mov" -size +1G -exec mv {} /storage \;