Comment supprimer les "attributs étendus" d'un fichier dans Mac OS X?

j'ai un script AppleScript qui exécute un test de stress. Partie de l'épreuve est d'ouvrir, enregistrer et fermer des fichiers. D'une façon ou d'une autre, les fichiers ont récupéré des "attributs étendus" qui interdisent aux fichiers d'être sauvegardés. Cela provoque l'échec du test de résistance.

Comment supprimer les attributs étendus?

218
demandé sur Peter Mortensen 2011-01-29 00:04:52

4 réponses

utilisez la commande xattr . Vous pouvez inspecter les attributs étendus:

$ xattr s.7z
com.apple.metadata:kMDItemWhereFroms
com.apple.quarantine

et utiliser l'option -d pour supprimer un attribut étendu:

$ xattr -d com.apple.quarantine s.7z
$ xattr s.7z
com.apple.metadata:kMDItemWhereFroms

vous pouvez également utiliser l'option -c pour supprimer tous les attributs étendus:

$ xattr -c s.7z
$ xattr s.7z

xattr -h vous montrera les options en ligne de commande, et xattr a une page de manuel .

341
répondu Joël 2017-04-19 21:10:07

suppression d'un attribut unique sur un seul fichier

voir la réponse de Bavarious.


pour supprimer tous les attributs étendus sur un seul fichier

utiliser xattr avec le drapeau -c pour "effacer" les attributs:

xattr -c yourfile.txt




Pour Supprimer Tous Les Attributs Étendus Sur De Nombreux Fichiers

pour supprimer de façon récursive les attributs étendus sur tous les fichiers d'un répertoire, combinez le drapeau -c "clear" avec le drapeau -r recursive:

xattr -rc /path/to/directory




Une Astuce pour les Utilisateurs de Mac OS X

Ont un long chemin avec des espaces ou des caractères spéciaux?

ouvrir Terminal.app et commencer à taper xattr -rc , incluez un espace de fuite, puis faites glisser le fichier ou le dossier dans la fenêtre Terminal.app et il ajoutera automatiquement le chemin complet avec l'échappement approprié.

91
répondu cwd 2014-01-23 03:02:19

essayez d'utiliser:

xattr -rd com.apple.quarantine directoryname

ceci prend soin d'enlever récursivement l'attribut pesky partout.

20
répondu venkat 2013-03-25 14:45:47

une autre approche récursive:

# change directory to target folder:
cd /Volumes/path/to/folder

# find all things of type "f" (file), 
# then pipe "|" each result as an argument (xargs -0) 
# to the "xattr -c" command:
find . -type f -print0 | xargs -0 xattr -c

# Sometimes you may have to use a star * instead of the dot.
# The dot just means "here" (whereever your cd'd to
find * -type f -print0 | xargs -0 xattr -c
6
répondu bob 2015-09-22 10:39:50