2 votes

Changer la propriété de tous les fichiers, d'un propriétaire à un autre

J'ai changé le nom court de mon compte utilisateur, mais cela semble avoir causé un problème avec certains fichiers (surtout des trucs personnalisés), qui sont toujours possédés par l'ancien nom d'utilisateur. Mon ancien nom court était cannyboy, et le nouveau est cannyman. Comment puis-je parcourir tout le disque dur et changer la propriété de tous les cannyboy en cannyman, sans modifier les autres attributs des fichiers?

3voto

Bratch Points 1531

En tant que débutant, je vous suggérerais d'exécuter la fonction "réparer les autorisations" dans l'utilitaire de disque.

Si le problème persiste, vous pourriez exécuter une commande comme :

find . -user old_user | while read file; do echo chown new_user  $file; done

note : cela ne fait rien tel quel actuellement - vous devrez l'ajuster à vos besoins - et assurez-vous que cela ne fasse rien de mal.

mise à jour j'ai appris un peu plus et maintenant j'exécuterais une commande comme celle-ci :

find . -user old_user -print0 | xargs -0  sudo echo chown new_user

encore une fois, ajustez la commande avant de l'exécuter !

3voto

sdmeyers Points 2249

Pour ce que ça vaut, changer le nom court est considéré comme "mauvais". Devinez maintenant pourquoi.

Cela dit, une façon de gérer cela est d'utiliser "find" pour localiser tous les fichiers appartenant à cannyboy:

find * -user cannyboy

(pour juste homebrew vous pourriez limiter ceci à la hiérarchie des dossiers /usr/local comme):

find -f /usr/local/* -user cannyboy

Ensuite, bouclez à travers les résultats avec:

sudo chown cannyboy cannyman *fichier*

notez que la commande ci-dessus nécessitera sudo et si vous faites une erreur, cela pourrait causer d'autres problèmes.

Pour faire ceci en deux étapes, d'abord:

find -f /usr/local/* -user cannyboy > fichiers.txt

Ensuite, bouclez à travers fichiers.txt en utilisant le script suivant (avec sudo):

#!/bin/bash

while read fichier;
do
    chown cannyboy cannyman $fichier
done

L'avantage de ceci est que vous pouvez utiliser un sous-ensemble de votre fichier txt pour tout tester avant de vous engager dans un changement massif.

Si vous êtes courageux, vous pouvez essayer le processus en une seule étape (cela devrait fonctionner, mais ce n'est pas garanti):

#/bin/bash
for resultat in `find -f /usr/local/* -user cannyboy`
do
    chown cannyboy cannyman $resultat
done

(au fait, avant Mac OS X 10.8.1, il y avait un vilain bug de find qui omettait certains résultats)

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X