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.
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.
Respostas:
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 .
lsé incomparável; tentar analisar é pedir problemas. A abordagem adequada é usar globbing shell.
sudo chmod 775 -Riria 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 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
zsh?
(D)qualificador de globbing, por exemplochmod -R 775 *(D)
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.
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` {} \;
* .*) não é a maneira mais segura de fazer isso. Particularmente, ele retornaria para o diretório pai, o que significa quechmodtambé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).