Como aplicar diretórios chmod recursivamente sem afetar arquivos?

18

Depois de aplicar chmod -R a um diretório, as permissões são alteradas para tudo dentro de (arquivos e diretórios). Como posso adicionar permissões de execução / pesquisa ( x ) aos diretórios sem modificar os arquivos?

    
por Ivan 15.01.2011 / 00:54

2 respostas

13

Você pode usar encontrar .

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

Onde 750 é o modo que você deseja aplicar e "./" é o diretório que você pesquisará recursivamente.

EDIT : Graças a @Gilles e encontrar (1) , eu o revisei para segurança e desempenho adicionais.

    
por 15.01.2011 / 01:03
6

Neste caso específico, você pode usar X em vez de x , que adiciona apenas os bits aos diretórios ou arquivos que já possuem o bit executável definido para algum usuário (por exemplo, chmod -R +X my_dir ).

Em geral (por exemplo, se você quiser tornar todos os diretórios legíveis sem afetar os arquivos), você pode usar find com -type d ou se estiver usando zsh (ou bash 4 com shopt -s globstar ) o **/ glob (ambos sem passar o -R flag para chmod ).

    
por 15.01.2011 / 01:05