Question Commande pour déverrouiller des fichiers "verrouillés" sur OS X


J'ai copié beaucoup de fichiers en lecture seule d'un système Windows sur mon Mac. Lorsque vous affichez les informations pour chaque fichier en utilisant "Obtenir des informations", je peux voir qu'elles sont verrouillées. J'écris un script bash pour copier certains fichiers et j'obtiens une erreur qui dit "Opération non autorisée" Donc, je dois d'abord déverrouiller les fichiers. Comme je tire souvent des fichiers du système Windows, je souhaite que mon script déverrouille ces fichiers.

Quelle est la commande du terminal pour déverrouiller des fichiers "verrouillés" sur OSX?


80
2017-09-14 02:15


origine




Réponses:


Pour déverrouiller des fichiers, vous pouvez utiliser:

chflags -R nouchg /PATH/TO/DIRECTORY/WITH/LOCKED/FILES/
  • chflags = changer les drapeaux sur les fichiers / dossiers tels que "verrouillé"
  • -R = recursive ou pour tout et suivre les répertoires dans le répertoire spécifié
  • nouchg = signifie que le fichier peut être modifié
  • /PATH/ = bien sûr est le chemin vers les fichiers que vous souhaitez modifier. Quelque chose comme: ~/Sites/mysite/directory/with/locked/files/ travailler en tant que bien.

116
2017-09-14 02:26



On dirait que j'ai trouvé la solution tout comme vous répondiez. J'ai aussi appris que le -R est pour récursif. Donc, pour déverrouiller tous les fichiers dans le répertoire en cours, utilisez <br/> chflags nochg * <br/> et ne changez qu’un seul fichier <br/> chflags nouchg onefile.txt Voir: mehtanirav.com/2009/04/16/recursively-unlock-files-on-mac-os-x - Michael Prescott
Il y a un autre drapeau pertinent schg qui est le drapeau immuable du système (voir developer.apple.com/library/mac/documentation/Darwin/Reference/...) La commande pour l'effacer est similaire: sudo chflags noschg PATH/TO/LOCKED/FILE - Andy Madge


Vous pouvez aussi utiliser SetFile -a l, même si elle fait la même chose que chflags nouchg:

SetFile -a l file.ext

-a l désactive le bit pour l'attribut verrouillé. Vous pouvez installer SetFile en téléchargeant le package Outils de ligne de commande à partir des préférences de Xcode ou à partir de developer.apple.com/downloads.


15
2017-09-14 02:30



C'est la méthode qui a fonctionné pour moi sur macOS Sierra avec quelques fichiers copiés depuis une machine Windows. J'ai utilisé: SetFile -a l ~ / Documents / Arduino / Samples / * - callisto


Ceci est utile si vous souhaitez rechercher un répertoire entier et déverrouiller tous les fichiers.

Dans le terminal cd dans l'annuaire

Cette commande trouve et va en imprimer une liste.

$ find . -flags uchg

Cette commande les déverrouille.

$ find . -flags uchg -exec chflags nouchg {} \;

Vous pouvez utiliser la première commande pour vérifier que tous les fichiers sont déverrouillés après avoir exécuté la deuxième commande, voilà!


12
2017-09-20 03:23



Bien que cela fonctionne, il peut être extrêmement lent pour un grand nombre de fichiers, car il lance un nouveau processus pour chaque fichier. - Richard Waite