Como aplicar diretórios chmod recursivamente sem afetar os arquivos?

18

Depois de me inscrever chmod -Rem um diretório, as permissões são alteradas para tudo dentro de (arquivos e diretórios). Como posso adicionar xpermissões execute / search ( ) aos diretórios sem modificar os arquivos?

Ivan
fonte

Respostas:

13

Você pode usar o find .

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 ao @Gilles e find (1) , revisei isso para obter segurança e desempenho adicionais.

ewindisch
fonte
@ Gilles Obrigado, não é muito frequente que eu aprenda algo novo sobre as ferramentas Unix :-) Isso é incrível. Além disso, agora lendo a documentação de localização , deve-se realmente usar -execdir.
ewindisch
7

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

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

sepp2k
fonte
@ Gilles: Bom ponto, eu adicionei isso à resposta.
sepp2k
11
"use X em vez de x, que apenas adiciona os bits aos diretórios ou arquivos que já possuem o bit executável definido para algum usuário" - Obrigado! Eu senti muita falta disso!
Ivan