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?

toby
fonte

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.

Hamish Downer
fonte
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/
MattrixHax
fonte
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 {} \;
hayalci
fonte
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

stdcall
fonte
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

Ranjeet_Automation_Tester
fonte
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.

Craig
fonte
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 . 
$ 
Seamus
fonte
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) {} \;
5p0ng3b0b
fonte
-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 '..'

Zypher
fonte
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 #