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

Я хочу изменить разрешения для дерева в Centos 4, чтобы добавить разрешения на выполнение для всех каталогов рекурсивно из каталога. Если я использую обычный chmod, файлы, кроме каталогов, также изменяются:

chmod -R o+x /my/path/here

Как я могу влиять только на каталоги?

3 ответа

Решение

Бежать find на -type d (каталоги) с -exec основной для выполнения chmod только по папкам:

find /your/path/here -type d -exec chmod o+x {} \;

Чтобы убедиться, что он выполняет только на желаемых объектах, вы можете запустить только find /your/path/here -type d первый; он просто распечатает найденные каталоги.

См. Примеры командной строки - chmod в Википедии.

chmod -R a-x+X directory    remove the execute permission on all files in 
                            a directory tree, while allowing for directory browsing.

Как добавил Даниэль, это должно работать в вашем случае:

chmod -R o+X directory
find /home/mydir -type d | xargs chmod ugo+rx

Это работает на CentOS6, который не находит выше -exec. По сути, он просто передает список каталогов команде xargs, которая отправляет их в chmod. Затем chmod устанавливает универсальное чтение и выполнение (поиск) по каталогам. Чтобы сделать это для всех пользователей дома, используйте sudo:

sudo sh -c "find /home/ -type d | xargs chmod ugo+rx"
Другие вопросы по тегам