Como colocar um diretório recursivamente, incluindo arquivos ou diretórios ocultos

31

Parece que o chown com o sinalizador recursivo não funcionará em diretórios ou arquivos ocultos. Existe alguma solução simples para isso?

    
por toby 30.06.2010 / 22:23

7 respostas

50

Tenho certeza de que o -R flag funciona - sempre tem para mim de qualquer maneira. O que não funciona, e o que me atrapalhou no início do uso da linha de comando, está usando * em um diretório com arquivos / diretórios ocultos. Então fazendo

$ chown -R /home/user/*

não fará os arquivos e diretórios ocultos. No entanto, se você segui-lo com

$ chown -R /home/user/.[^.]*

você fará todos os arquivos ocultos (mas não . ou .. como /home/user/.* ). Tendo dito tudo isso, eu esperaria

$ chown -R /home/user

para obter todos os arquivos e diretórios ocultos dentro de /home/user - embora isso também altere as permissões do próprio diretório, o que pode não ser o que você pretendia.

    
por 01.07.2010 / 00:46
8

eu acredito que o seguinte comando deve funcionar para isso

chown -hR userid:usergroup /nameofdirectory/nameofsubdir/
    
por 01.07.2010 / 00:51
7

"chown -R" funciona, mas uma alternativa seria usar o find.

 find /path/to/dir -exec chown USER {} \;
    
por 30.06.2010 / 22:34
2

Você pode alterar o atributo dotglob temporariamente para expandir. arquivos e, em seguida, revertê-lo.

shopt -s dotglob; chown -R user:group FOLDER; shopt -u dotglob

Mais informações sobre dotglob podem ser encontradas aqui

    
por 17.08.2016 / 08:44
1

Além disso, se você for como eu, provavelmente estará executando chown principalmente a partir do diretório atual. Eu estava acostumado a executá-lo assim: chown rails.rails -R * . Basta mudar o asterisco para um ponto (abreviação do diretório atual) assim: chown rails.rails -R . traz todos os diretórios ocultos.

    
por 10.05.2012 / 23:49
1

Usando o loop for com a opção ls -A , Podemos encontrar todos os arquivos ocultos e o diretório excluir . e .. e, em seguida, alterar a propriedade de todos os arquivos e diretórios ocultos.

for i in 'ls -A | grep "^\."';do chown -R user:group $i;done

Use a opção xargs com ls -A

ls -A | grep "^\." | xargs chown user:group

Para mais detalhes Clique aqui e visite o meu site

    
por 08.07.2018 / 14:48
-2

Você poderia fazer algo como

for i in 'ls -A';do chown -R user:group $i;done

O -A ( capital A) é importante, pois exclui '.' e '..'

    
por 30.06.2010 / 22:33