Как применять рекурсивные каталоги chmod без влияния на файлы?

После того, как я применил chmod -R к каталогу, разрешения изменяются для всего внутри (файлы и каталоги). Как я могу добавить разрешения на выполнение / поиск ( x ) в каталоги без изменения файлов?

  • Заменить между шаблонами, которые начинаются и заканчиваются в разных строках
  • соответствие строки awk из 2 столбцов
  • Unix: проблема с командой cmp
  • как отправить сигнал клавиатуры с помощью сценария оболочки
  • Удаление следующего-последнего расширения в имени файла
  • Есть ли стандартная команда, которая всегда выходит с ошибкой?
  • Каковы существенные различия между различными раковинами?
  • Проблема bc о длинном выражении
  • Найти только первые несколько файлов с помощью find?
  • Добавление ведущих символов перед строкой с использованием printf или echo
  • Разрешения (ACL), позволяющие создавать только новые файлы, - также необходимы расширенные атрибуты?
  • cd и ls ведут себя по-разному, когда внутри softlink к директории
  • 2 Solutions collect form web for “Как применять рекурсивные каталоги chmod без влияния на файлы?”

    Вы можете использовать find .

     find ./ -type d -execdir chmod 750 {} + 

    Где 750 – это режим, который вы хотите применить, и «./» – это каталог, который вы будете рекурсивно искать.

    EDIT : Благодаря @Gilles и найти (1) , я пересмотрел это для дополнительной безопасности и производительности.

    В этом конкретном случае вы можете использовать X вместо x который добавляет только биты в каталоги или файлы, у которых уже установлен исполняемый бит для некоторого пользователя (например, chmod -R +X my_dir ).

    В общем случае (например, если вы хотите, чтобы все доступные для чтения каталоги не влияли на файлы), вы можете либо использовать find с -type d либо если вы используете zsh (или bash 4 с shopt -s globstar ) **/ glob ( оба без передачи флага -R в chmod ).

    Linux и Unix - лучшая ОС в мире.