Como executo recursivamente chmod
ou chown
para arquivos ocultos?
sudo chmod -R 775 *
não funciona em arquivos ocultos.
A mesma coisa vale para sudo chown -R user:group
.
Como executo recursivamente chmod
ou chown
para arquivos ocultos?
sudo chmod -R 775 *
não funciona em arquivos ocultos.
A mesma coisa vale para sudo chown -R user:group
.
Respostas:
Se você estiver bem também modificando o diretório atual, faça isso e deixe -R
o trabalho pesado. -R
não ignora arquivos ocultos.
sudo chmod -R 775 .
ls
é incomparável; tentar analisar é pedir problemas. A abordagem adequada é usar globbing shell.
sudo chmod 775 -R
iria de barriga para cima, de modo a manter esta resposta .
*
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 builtin
manual 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
zsh
?
(D)
qualificador de globbing, por exemplochmod -R 775 *(D)
Outra opção é usar o que find
eu 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 find
tem sintaxe diferente em versões diferentes.
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 find
lugar.
find . -type f -exec chmod `VALUE` {} \;
* .*
) não é a maneira mais segura de fazer isso. Particularmente, ele retornaria para o diretório pai, o que significa quechmod
també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)
.