Comment supprimer les «atsortingbuts étendus» sur un fichier sous Mac OS X?

J’ai un script AppleScript qui exécute un test de résistance. 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é des “atsortingbuts étendus” qui empêchent la sauvegarde des fichiers. Cela provoque l’échec du test de résistance.

Comment supprimer les atsortingbuts étendus?

    Utilisez la commande xattr . Vous pouvez inspecter les atsortingbuts étendus:

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

    et utilisez l’option -d pour supprimer un atsortingbut é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 atsortingbuts étendus:

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

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

    Suppression d’un atsortingbut unique sur un fichier unique

    Voir la réponse de Bavarious.


    Pour supprimer tous les atsortingbuts étendus d’un fichier unique

    Utilisez xattr avec l’indicateur -c pour “effacer” les atsortingbuts:

     xattr -c yourfile.txt 


    Pour supprimer tous les atsortingbuts étendus sur plusieurs fichiers

    Pour supprimer récursivement des atsortingbuts étendus sur tous les fichiers d’un répertoire, combinez le drapeau -c “clear” avec le drapeau récursif -r :

     xattr -rc /path/to/directory 


    Un conseil pour les utilisateurs de Mac OS X

    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 vers la fenêtre Terminal.app et il appenda automatiquement le chemin d’access complet avec une fuite correcte.

    Essayez d’utiliser:

     xattr -rd com.apple.quarantine directoryname 

    Cela prend soin de supprimer récursivement l’atsortingbut 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