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?
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 .
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é.
essayez d'utiliser:
xattr -rd com.apple.quarantine directoryname
ceci prend soin d'enlever récursivement l'attribut pesky partout.
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