J'ai un script AppleScript qui exécute un test de stress. Une partie du test consiste à ouvrir, enregistrer et fermer certains fichiers. D'une manière ou d'une autre, les fichiers ont récupéré certains "attributs étendus" qui empêchent la sauvegarde des fichiers. Cela provoque l'échec du test de résistance.
Comment puis-je supprimer les attributs étendus?
Utilisez la commande xattr
. Vous pouvez inspecter les attributs étendus:
$ xattr s.7z
com.Apple.metadata:kMDItemWhereFroms
com.Apple.quarantine
et utilisez 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 .
Voir la réponse de Bavarious.
Utilisez xattr
avec le drapeau -c
pour "effacer" les attributs:
xattr -c yourfile.txt
Pour supprimer de manière récursive les attributs étendus de tous les fichiers d'un répertoire, combinez l'indicateur -c
"clear" avec l'indicateur -r
récursif:
xattr -rc /path/to/directory
Vous avez un long chemin avec des espaces ou des caractères spéciaux?
Ouvrez Terminal.app
et commencez à taper xattr -rc
, incluez un espace de fin, puis faites glisser le fichier ou le dossier dans la fenêtre Terminal.app
. Le chemin complet sera automatiquement ajouté avec le caractère d'échappement approprié.
Essayez d'utiliser:
xattr -rd com.Apple.quarantine directoryname
Cela permet de supprimer récursivement l'attribut embêtant 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