arquivos chmod apenas em todos os subdiretórios


54

Por favor, alguém me ajude com chmod, tenho a seguinte estrutura de arquivos

-dir1
--file1
--file2
--dir1a
---file1a1
---file1a2
--dir1b
---file1b1
---file1b2

Como faço para chmod 655 para todos os arquivos em dir1 e todos os subdiretórios? Portanto, todos os arquivos terão permissão 655 e todos os diretórios permanecerão como estavam.

Obrigado

Respostas:


108

Melhor usar

find . -type f -exec chmod 655 -- {} +

A outra solução proposta de @sagarchalise não funcionará se os nomes de arquivos contiverem espaços ou começarem com um hífen.


16
Semelhante, chmod todos os diretórios que você pode usar find . -type d -exec chmod 755 {} +para mudar todos os diretórios para 755.
Kris Harper

2
Para que serve o +?
precisa saber é o seguinte

3
@Brettski: o +sinal é expandido findpara a lista dos caminhos do arquivo (ou parte dele, se for muito longo).
enzotib 28/01

3
Para que serve?
Orient

2
O --indica o final das opções de linha de comando. Isso evita que um arquivo que comece com um hífen seja interpretado como uma opção de linha de comando, como seria após o --.
Tim Tisdall

8

Eu acho que entrando dir1e

find . -type f | xargs chmod 655

fará o truque.


isso funciona também, mas eu tenho algum aviso com "Não existe esse arquivo ou diretório"
netic

@manetic: depende, como disse na minha resposta, de nomes de arquivos contendo espaços.
enzotib 27/08/11

4
Para completar, altere-o para encontrar. -type f -print0 | xargs -0 chmod 655 iria resolver o problema de espaço Eu acredito que, embora resposta de @ enzotib é mais conciso
Matt freake

o que matt freake disse
Sergiy Kolodyazhnyy 4/04
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.