Изменить права доступа к файлам и каталогам, исключая один каталог
Я пытаюсь изменить права доступа к файлам и каталогам, за исключением одного каталога. Что у меня есть:
find ! -name test -exec chmod -R 700 {} \;
проверить каталог, который мне нужно исключить, в то время как для других файлов и каталогов должно быть 700 разрешений доступа.
1 ответ
Чтобы игнорировать каталог, вы должны использовать -prune, Рассмотрим что-то вроде этого:
find . -name test -prune -o -type d -exec chmod 700 {} \; -o -type f -execdir chmod 600 {} +
Объяснение:
-name test -prune:-prune, если тесты перед этим верны, а текущий файл является каталогом, пропустите его, иначе верните false.-o -type d -exec chmod 700 {} \;: если-pruneвозвращает false, тогда эти параметры применяются (как-oИЛИ), и это относитсяchmod 700если файл является каталогом.-o -type f -execdir chmod 600 {} +: если оба вышеуказанных теста возвращают false, то применяютсяchmod 600как это не каталог.execdirэто "гораздо более безопасный метод для вызова команд", согласно man-странице, которая также приводит причины.