Uma maneira mais rápida de alterar o proprietário / grupo recursivamente? [duplicado]

9

Atualmente, quando quero alterar o proprietário / grupo de forma recursiva, 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 ele alterasse todos os arquivos de uma só vez (muito mais rápido), em vez de um de cada vez, mas não consigo encontrar a informação. Isso pode ser feito?

    
por danzo 26.05.2016 / 16:22

2 respostas

15

Use a opção recursiva de chown :

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

A especificação de ambos * e .[^.]* corresponderá a todos os arquivos e diretórios que find usaria. O separador recomendado hoje em dia é : em vez de . . (Como apontado por justins , usar .* não é seguro, pois pode ser expandido para incluir . e .. , resultando em chown alterando a propriedade do diretório pai e todos os seus subdiretórios.

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

chown -R owner:group .
    
por 26.05.2016 / 16:24
2

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

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

Atenção! Em alguns shells, o formulário 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 aplica . e .. , expandindo os padrões.

No entanto, é útil saber que o principal problema que diminui o uso de find é que você invoca chmown em cada diretório e arquivo encontrado. É muito mais rápido usar:

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

como sempre, chown é chamado com tantos parâmetros quanto couber 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 isso 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 só deseja alterar os diretórios).

    
por 26.05.2016 / 17:40