web-dev-qa-db-fra.com

Comment afficher un répertoire récursivement, y compris les fichiers ou répertoires cachés

On dirait que chown avec l'indicateur récursif ne fonctionnera pas sur les répertoires ou fichiers cachés. Y a-t-il une solution simple à cela?

38
toby

Je suis sûr que le -R le drapeau fonctionne - il a toujours 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, c'est d'utiliser * dans un répertoire avec des fichiers/répertoires cachés. Ce faisant

$ chown -R /home/user/*

ne fera pas les fichiers et répertoires cachés. Cependant, si vous le suivez avec

$ chown -R /home/user/.[^.]*

alors vous ferez tous les fichiers cachés, (mais pas . ou .. comme /home/user/.* ferait). Cela dit, je m'attendrais à ce que

$ chown -R /home/user

pour obtenir tous les fichiers et répertoires cachés dans /home/user - bien que cela changera bien sûr aussi les permissions du répertoire lui-même, ce qui pourrait ne pas être ce que vous vouliez.

60
Hamish Downer

je crois que la commande suivante devrait fonctionner pour cela

chown -hR userid:usergroup /nameofdirectory/nameofsubdir/
9
MattrixHax

"chown -R" fonctionne, mais une alternative serait d'utiliser find.

 find /path/to/dir -exec chown USER {} \;
8
hayalci

Vous pouvez modifier temporairement l'attribut dotglob pour le développer. fichiers, puis le restaurer.

shopt -s dotglob; chown -R user:group FOLDER; shopt -u dotglob

Plus sur dotglob peut être trouvé ici

4
stdcall

Utilisation de for-loop avec ls -A option, nous pouvons trouver tous les fichiers et répertoires cachés exclure . et .., puis modifiez la propriété de tous les fichiers et répertoires masqués.

for i in `ls -A | grep "^\."`;do chown -R user:group $i;done

Utilisez l'option xargs avec ls -A

ls -A | grep "^\." | xargs chown user:group

Pour plus de détails Cliquez ici et visitez mon site

chown fonctionnera avec les fichiers et répertoires cachés. Dans l'exemple suivant, nous allons modifier la propriété de l'utilisateur et du groupe pour tous les fichiers dans ~/some/folder. Tous les fichiers incluent tous les fichiers cachés ( par exemple .bashrc, .profile etc.) et des dossiers dans le ~/some/folder niveau et inférieur. Notez en particulier que nous ne souhaitons pas changer la propriété de ~/some, et donc nous exclurons le fichier ~/some/.. des changements de propriétaire.

$ cd ~/some/folder 
$ Sudo chown -R usrname:grpname . 
$ 
1
Seamus

De plus, si vous êtes comme moi, vous exécuterez probablement chown principalement à partir du répertoire actuel. J'étais habitué à le faire comme ceci: chown Rails.rails -R *. Changer simplement l'astérisque en un point (abréviation du répertoire courant) comme ceci: chown Rails.rails -R . apporte tous les répertoires cachés.

1
Craig

Pour afficher TOUS les fichiers dans le répertoire et les sous-répertoires actuels de l'utilisateur actuel;

find . -exec chown $(whoami) {} \;

ou si l'utilisateur ne peut pas afficher certains fichiers en raison d'autorisations restreintes;

Sudo find . -exec chown $(logname) {} \;
0
5p0ng3b0b