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


37

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

Respostas:


56

Tenho certeza de que a -Rbandeira funciona - sempre funciona para mim. O que não vai funcionar, e o que me deu uma surra no início do uso da linha de comando, é usar *um diretório com arquivos / diretórios ocultos. Fazendo

$ chown -R /home/user/*

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

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

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

$ chown -R /home/user

para obter todos os arquivos e diretórios ocultos /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.


3
Fazer um chownno diretório tem o efeito colateral de alterar as permissões no próprio diretório, bem como todo o seu conteúdo, que pode ou não ser o que você deseja.
Wfaulk #

A + funcionou como um encanto para mim.
SuperFamousGuy

Eu tentei chown nginx:nginx -R /path/to/.[^.]*e só mudou a propriedade para .dot arquivos ocultos. não tudo.
Pathros

@wfaulk Como mencionado por @Hamish Downer, você deve fazer os dois *e segui-lo .[.^]*para obter todos os arquivos.
god_is_love 23/08

9

Eu acredito que o seguinte comando deve funcionar para este

chown -hR userid:usergroup /nameofdirectory/nameofsubdir/

11
-h afetar ligações simbólicas em vez de qualquer arquivo referenciado (útil somente em sistemas que podem alterar a propriedade de um link simbólico)
R. van Twisk

8

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

 find /path/to/dir -exec chown USER {} \;

5
Observe que, com GNU achado, usando +, em vez de ;como o terminador ao -exec será mais eficiente como ele vai usar o número mínimo necessário de garfos chown em vez de um garfo por arquivo / diretório
ensopado de

3

Você pode alterar o dotglobatributo temporariamente para expandir. arquivos e depois revertê-lo.

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

Mais informações dotglobpodem ser encontradas aqui


2

Usando for-loop com ls -Aopção, podemos encontrar todos os arquivos ocultos e diretório excluir .e ..em seguida, altere a propriedade de todos os arquivos ocultos e diretório.

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

Use a xargsopção comls -A

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

Para mais detalhes, clique aqui e visite o meu site


1

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


2
Com o efeito colateral de alterar as permissões no diretório atual, bem como todo o seu conteúdo, que pode ou não ser o que você deseja.
Wfaulk #

1

chownfuncionará com arquivos e diretórios ocultos. No exemplo a seguir, alteraremos a propriedade do usuário e do grupo para todos os arquivos ~/some/folder. Todos os arquivos incluem todos os arquivos ocultos (por exemplo .bashrc, .profileetc.) e pastas no ~/some/foldernível e abaixo. Observe, em particular, que não desejamos alterar a propriedade ~/somee, portanto, excluiremos o arquivo ~/some/..das alterações de propriedade.

$ cd ~/some/folder 
$ sudo chown -R usrname:grpname . 
$ 

Isso funcionou para mim
klor

0

Para exibir TODOS os arquivos no diretório atual e subdiretórios do usuário atual;

find . -exec chown $(whoami) {} \;

ou se o usuário não puder exibir alguns arquivos devido a permissões restritas;

sudo find . -exec chown $(logname) {} \;

-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 '..'


Isso mudará apenas os arquivos e subdiretórios no diretório atual, e não os níveis mais baixos. (Que pode ser o que o OP deseja.) Ele também quebrará nomes de arquivos e nomes de diretório com espaços (ou tabulações) neles.
Wfaulk #
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.