Como alterar as permissões de vários arquivos encontrados com o comando find?

11

Eu tenho um diretório com vários arquivos. Parte dos arquivos tem 755permissões e a outra parte possui 644permissões. Eu gostaria de converter os arquivos com 755permissões para 644. Eu tentei a seguinte linha, executando-o no próprio diretório:

find . -perm 755 -exec chmod 644 {}\;

No entanto, como resultado, a permissão mudou apenas para o próprio diretório e, depois de alterá-lo, descobri que as permissões dos arquivos permaneciam inalteradas. Perco alguma coisa?

Eugene S
fonte
Seu comando remove o bit executável do diretório, tornando impossível chdir para ele e ver os arquivos que ele contém. É por isso que o comando não parece estar funcionando. Tente em find ./ -type f -exec chmod -x {} \;vez disso.
Shadur

Respostas:

16

Ok, parece que eu encontrei o problema. Parece que deve haver um espaço obrigatório entre o {}e \;, por isso, o comando será semelhante a este:

find . -perm 755 -exec chmod 644 {} \;

Ao invés de:

find . -perm 755 -exec chmod 644 {}\;

Além disso, o problema de alterar as permissões do diretório pode ser resolvido com a adição de um -type fsinalizador, para que fique da seguinte maneira:

find . -type f -perm 755 -exec chmod 644 {} \;
Eugene S
fonte
5
Você pode usar em +vez de \;reduzir o número de subprocessos criados.
22412 Kevin
-type dencontrará diretórios. -type fencontrará arquivos.
Mick T