Comment exécuter récursivement chmodou chownpour 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.
Comment exécuter récursivement chmodou chownpour 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.
Réponses:
Si vous êtes d'accord, modifiez également le répertoire en cours, faites-le et laissez -Rfaire le gros du travail. -Rn'ignore pas les fichiers cachés.
sudo chmod -R 775 .
lsn'est pas analysable; essayer de l'analyser, c'est demander des ennuis. L'approche appropriée consiste à utiliser le globbing shell.
sudo chmod 775 -Rirait 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:
shopt -s dotglob
En savoir plus à ce sujet dans le builtinmanuel de bash :
S'il est défini, Bash inclut les noms de fichiers commençant par un «. dans les résultats de l'expansion du nom de fichier.
Cela fera *également inclure des fichiers cachés.
chmod -R 775 *
Désactivez-le avec:
shopt -u dotglob
zsh?
(D)qualificatif globbing, par exemplechmod -R 775 *(D)
Une autre option est d'utiliser findj'aime ça car vous pouvez avoir un contrôle très fin sur elle.
find <path to start from> -exec chown <options> {} \+
find -path '<path to include>' -exec chown <options> {} \+
Le seul inconvénient est qu'il finda une syntaxe différente sur différentes versions.
Tous les fichiers du répertoire courant, récursivement, y compris les fichiers cachés:
chmod 755 -R ./* ./.[!.]*
Tous les fichiers du répertoire courant, pas récursivement, y compris les fichiers cachés:
chmod 755 ./* ./.[!.]*
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 findplutôt.
find . -type f -exec chmod `VALUE` {} \;
* .*) 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).