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

18

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

Иван
источник

Ответы:

13

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

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

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

РЕДАКТИРОВАТЬ : Благодаря @Gilles и find (1) , я пересмотрел это для дополнительной безопасности и производительности.

ewindisch
источник
@ Жиль Спасибо, я не слишком часто узнаю что-то новое об инструментах Unix :-) Это потрясающе. Кроме того, теперь, читая документацию по поиску , нужно вместо нее использовать -execdir.
Евиндиш
7

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

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

sepp2k
источник
@ Жиль: Хорошо, я добавил это к ответу.
sepp2k
1
«используйте X вместо x, который добавляет биты только к каталогам или файлам, в которых для какого-либо пользователя уже установлен исполняемый бит» - Спасибо! Я очень скучал по этой вещи!
Иван