Como chmod e chown arquivos ocultos no Linux?

33

Como executo recursivamente chmodou chownpara arquivos ocultos?

sudo chmod -R 775 * não funciona em arquivos ocultos.

A mesma coisa vale para sudo chown -R user:group.

nada de especial aqui
fonte

Respostas:

35

Se você estiver bem também modificando o diretório atual, faça isso e deixe -Ro trabalho pesado. -Rnão ignora arquivos ocultos.

sudo chmod -R 775 .
John Kugelman apoia Monica
fonte
14
Essa ( * .*) não é a maneira mais segura de fazer isso. Particularmente, ele retornaria para o diretório pai, o que significa que chmodtambém é irmão do diretório atual. A maneira correta seria * ..?* .[^.]*ou, melhor ainda (considerando que os curingas podem não corresponder a nenhum arquivo) $(ls -A).
jpalecek
1
@jpalecek: A saída de lsé incomparável; tentar analisar é pedir problemas. A abordagem adequada é usar globbing shell.
Scott Severance
Mesmo que no linux você tem a capacidade de alterar a ordem dos argumentos para chmod, ao fazer roteiros entre o Linux eo OS X plat-X, esta é a ordem que você deve usar, por exemplo, sudo chmod 775 -Riria de barriga para cima, de modo a manter esta resposta .
precisa saber é o seguinte
35

* não inclui arquivos ocultos por padrão, mas se você estiver no bash, poderá fazer isso com:

shopt -s dotglob

Leia mais sobre isso no builtinmanual do bash :

Se definido, o Bash inclui nomes de arquivos que começam com um `. ' nos resultados da expansão do nome do arquivo.

Isso fará *incluir arquivos ocultos também.

chmod -R 775 *

Desative-o com:

shopt -u dotglob
slhck
fonte
2
Como fazer isso zsh?
Nada-especial-aqui
2
Você usa o (D)qualificador de globbing, por exemplochmod -R 775 *(D)
slhck 25/10
2

Outra opção é usar o que findeu gosto, pois você pode ter um controle de granulação muito fina sobre ele.

find <path to start from> -exec chown <options> {} \+

find -path '<path to include>' -exec chown <options> {} \+

A única desvantagem é que findtem sintaxe diferente em versões diferentes.

RedX
fonte
2

Todos os arquivos no diretório atual, recursivamente, incluindo arquivos ocultos:

chmod 755 -R ./* ./.[!.]*

Todos os arquivos no diretório atual, não recursivamente, incluindo arquivos ocultos:

chmod 755 ./* ./.[!.]*

Isso não altera um nome de arquivo de exceção que começa com 2 pontos, como exemplo, "./..thisonescapesunharmed.txt"

Além disso, tenha cuidado para não remover o bit "x", ou todos os seus diretórios não estarão acessíveis (é necessário que o bit x seja inserido em um diretório).

Lembre-se deste alerta: nunca use nu, *mas ./*sim.

Para evitar problemas ao definir permissões nos diretórios, use em seu findlugar.

find . -type f -exec chmod `VALUE` {} \;
Dr Beco
fonte