On dirait que chown avec l'indicateur récursif ne fonctionnera pas sur des répertoires ou des fichiers cachés. Y at-il une solution de contournement simple pour cela?
37
Je suis à peu près sûr que le -R
drapeau fonctionne - il l'a toujours fait pour moi de toute façon. Ce qui ne fonctionnera pas, et ce qui m’a fait trébucher au début de mon utilisation de la ligne de commande, est d’utiliser *
un répertoire contenant des fichiers / répertoires cachés. Faire
$ chown -R /home/user/*
ne fera pas les fichiers cachés et les répertoires. Cependant si vous le suivez avec
$ chown -R /home/user/.[^.]*
alors vous ferez tous les fichiers cachés (mais pas .
ou ..
comme vous le /home/user/.*
feriez). Cela dit, je m'attendrais à
$ chown -R /home/user
pour obtenir tous les fichiers et répertoires cachés /home/user
- bien que cela modifie bien sûr également les permissions du répertoire lui-même, ce qui peut ne pas être ce que vous vouliez.
chown
sur le répertoire a pour effet secondaire que vous modifiez les autorisations sur le répertoire lui-même ainsi que tout son contenu, ce qui peut être ou ne pas être ce que vous voulez.chown nginx:nginx -R /path/to/.[^.]*
et il a seulement changé de propriétaire en fichiers cachés .dot. pas tout.*
et suivre.[.^]*
pour obtenir tous les fichiers.Je crois que la commande suivante devrait fonctionner pour cette
la source
"chown -R" fonctionne, mais une alternative serait d'utiliser find.
la source
+
au lieu de;
comme terminateur de -exec sera plus efficace car il utilisera le nombre minimum nécessaire de forks à chown au lieu d'un fork par fichier / répertoireVous pouvez modifier l'
dotglob
attribut temporairement pour le développer. fichiers et ensuite le retourner.Plus sur
dotglob
peut être trouvé icila source
L' utilisation de la boucle avec
ls -A
option, nous pouvons trouver tous les fichiers cachés et le répertoire exclure.
et..
puis modifiez la propriété pour tous les fichiers cachés et répertoire.Utilisez l'
xargs
option avecls -A
Pour plus de détails, cliquez ici et visitez mon site
la source
En outre, si vous êtes comme moi, vous exécuterez probablement chown principalement à partir du répertoire actuel. Je suis habitué à cette course comme:
chown rails.rails -R *
. Changer simplement l'astérisque en un point (abrégé pour le répertoire en cours) comme ceci:chown rails.rails -R .
fait apparaître tous les répertoires cachés.la source
chown
fonctionnera avec les fichiers cachés et les répertoires. Dans l'exemple suivant, nous allons changer la propriété des utilisateurs et des groupes pour tous les fichiers de~/some/folder
. Tous les fichiers incluent tous les fichiers cachés (par exemple.bashrc
,.profile
etc.) et les dossiers au~/some/folder
niveau et au-dessous. Notez en particulier que nous ne souhaitons pas changer de propriétaire~/some
, nous exclurons donc le fichier~/some/..
des modifications de propriétaire.la source
Pour chown TOUS les fichiers du répertoire et des sous-répertoires actuels de l’utilisateur actuel;
ou si l'utilisateur ne peut pas chown certains fichiers en raison d'autorisations restreintes;
la source
Vous pourriez faire quelque chose comme
Le
-A
( capital A) est important car il exclut "." et '..'la source