Comment exécuter récursivement chmod
ou chown
pour des fichiers cachés?
sudo chmod -R 775 *
ne fonctionne pas sur les fichiers cachés.
La même chose vaut pour sudo chown -R user:group
.
Si vous êtes d'accord, modifiez également le répertoire en cours, faites-le et laissez -R
faire le gros du travail. -R
n'ignore pas les fichiers cachés.
sudo chmod -R 775 .
* .*
) n'est pas le moyen le plus sûr de le faire. En particulier, il serait récursif dans le répertoire parent, ce qui signifie qu'il s'agitchmod
également de frères et sœurs du répertoire actuel. La bonne façon serait* ..?* .[^.]*
ou, encore mieux (étant donné que les caractères génériques peuvent ne correspondre à aucun fichier)$(ls -A)
.ls
n'est pas analysable; essayer de l'analyser, c'est demander des ennuis. L'approche appropriée consiste à utiliser le globbing shell.sudo chmod 775 -R
irait de l'avant, alors respectez cette réponse .*
n'inclut pas les fichiers cachés par défaut, mais si vous êtes en bash, vous pouvez le faire avec:En savoir plus à ce sujet dans le
builtin
manuel de bash :Cela fera
*
également inclure des fichiers cachés.Désactivez-le avec:
la source
zsh
?(D)
qualificatif globbing, par exemplechmod -R 775 *(D)
Une autre option est d'utiliser
find
j'aime ça car vous pouvez avoir un contrôle très fin sur elle.Le seul inconvénient est qu'il
find
a une syntaxe différente sur différentes versions.la source
Tous les fichiers du répertoire courant, récursivement, y compris les fichiers cachés:
Tous les fichiers du répertoire courant, pas récursivement, y compris les fichiers cachés:
Cela ne changera pas un nom de fichier d'exception commençant par 2 points, par exemple,
"./..thisonescapesunharmed.txt"
Attention aussi à ne pas supprimer le bit "x", sinon tous vos répertoires ne seront pas accessibles (on a besoin du bit x pour cd dans un dir).
Rappelez-vous de cette alerte: n'utilisez jamais nu
*
mais à la./*
place.Pour éviter les problèmes de définition des autorisations sur les répertoires, utilisez
find
plutôt.la source