desenv-web-rp.com

Uma maneira mais rápida de mudar de proprietário / grupo recursivamente?

Atualmente, quando quero alterar o proprietário/grupo recursivamente, faço o seguinte:

find . -type f -exec chown <owner>.<group> {} \;
find . -type d -exec chown <owner>.<group> {} \;

Mas isso pode levar vários minutos para cada comando. Ouvi dizer que havia uma maneira de fazer isso para que todos os arquivos fossem alterados de uma só vez (muito mais rápido), em vez de um de cada vez, mas não consigo encontrar as informações. Isso pode ser feito?

23
danzo

Use a opção recursiva de chown:

chown -R owner:group * .[^.]*

Especificando ambos * e .[^.]* corresponderá a todos os arquivos e diretórios que find corresponderiam. O separador recomendado hoje em dia é : ao invés de .. (Como indicado por justins , usando .* é inseguro, pois pode ser expandido para incluir . e .., resultando em chown alterando a propriedade do diretório pai e de todos os seus subdiretórios.)

Se você deseja alterar também a propriedade do diretório atual, isso pode ser simplificado para

chown -R owner:group .
37
Stephen Kitt

Para comandos como chown que possuem recursão própria, é mais rápido usar essa opção:

 chown -R owner:group * .[^.]*

Atenção! Em algumas conchas, a forma chown -R owner:group * .* substitui o proprietário no diretório raiz /. Porque .* significa ../../../../root, ../bin ... etc. Todos os caminhos. No entanto, o Shell mais usado, bash, não se aplica . e .., expandindo padrões.

No entanto, é útil saber que o principal problema que diminui o uso de find é que você invoca chmown em todos os diretórios e arquivos encontrados. É muito mais rápido usar:

find . -type f -exec chown <owner>:<group> {} +
find . -type d -exec chown <owner>:<group> {} +

sempre que chown for chamado com tantos parâmetros quanto caber na linha de comando.

Essa alteração funciona para outros comandos, que também não possuem uma opção de recursão incorporada como chown. E funciona (e melhora a velocidade) em situações em que existe essa opção de recursão, mas você não pode usá-la (por exemplo, ao usar chmod, e deseja alterar apenas diretórios).

5
Anthon