21 votes

Comment supprimer l'attribut com.apple.quarantine de tous les fichiers .webarchive ayant cet attribut étendu ?

Répartis sur plusieurs systèmes de fichiers, j'ai de nombreux fichiers .webarchive qui ont été enregistrés par OmniWeb. Ainsi, par exemple :

sh-3.2$ ls -@ 2012-03-19.webarchive 
2012-03-19.webarchive
sh-3.2$ ls -@l 2012-03-19.webarchive 
-rw-r--r--@ 1 gjp22  staff  3722852 19 Mar  2012 2012-03-19.webarchive
    com.apple.quarantine         26 
sh-3.2$ xattr -l 2012-03-19.webarchive 
com.apple.quarantine: 0000;4f66fcc8;OmniWeb.app;

Ces fichiers sont traités comme provenant d'un développeur non identifié. Je peux ouvrir chacun d'eux avec un Control-clic mais c'est fastidieux.

Donc j'aimerais une commande, impliquant probablement trouver(1) à supprimer tous ces attributs étendus .

30voto

Ryccardo Points 1556
find . -iname '*.webarchive' -print0 | xargs -0 xattr -d com.apple.quarantine
  • supprimera ( xattr -d ) le com.apple.quarantaine attribut étendu
  • de tous les fichiers dont l'extension est .webarchive ( -iname '*.webarchive' (nom du fichier) )
  • situé dans le répertoire courant et ses sous-répertoires ( . -profondeur où le -depth est implicite)
  • en passant par xargs ( -print0 | xargs -0 ) pour éviter les problèmes avec les noms de fichiers contenant des espaces et d'autres caractères spéciaux (un objectif similaire peut être atteint avec une efficacité légèrement réduite en utilisant find . -iname '*.webarchive' -exec xattr -d '{}' \; ).

Explication de la différence d'efficacité :

Lorsque la syntaxe le permet, comme dans ce cas, xargs assemble une ou plusieurs lignes de commande telles que xattr -d com.apple.quarantine /path/to/file1.webarchive /path/to/fileN.webarchive

tandis que le "à mon avis" est plus facile à retenir. find La version -only répète la commande à chaque fois : xattr -d com.apple.quarantine /path/to/file1.webarchive ; xattr -d com.apple.quarantine /path/to/fileN.webarchive

3 votes

find fera le même assemblage efficace des chemins de fichiers si vous le terminez par \+ au lieu de \; .

2voto

jasonology Points 651

La version de xattr que j'ai sur mon MacOS 11.6 prétend avoir une option -r.

-r : agir de manière récursive

Vous devriez donc être en mesure d'utiliser

xattr -d -r file.webarchive

0 votes

Beaucoup plus pratique, cela fonctionnait sur la 12.6 : xattr -d com.apple.quarantine -r my_dir/

0 votes

La 12.5 n'est même pas encore sortie ! Où en êtes-vous avec la 12.6 ? En tout cas merci, j'ai modifié ma réponse pour inclure l'attribut.

0 votes

Le plus gros des doigts, 12.4 est ce que mes petites saucisses ont voulu taper

1voto

zoli2k Points 1897

Voici un moyen plus automatisé d'accomplir cette tâche :

ouvrez Automator - sélectionnez "service".

collez ceci

on run {input, parameters}
    tell application "Terminal"
        activate
        set filesString to ""
        repeat with file_ in input
            set filesString to filesString & " " & quoted form of (POSIX path of file_)
        end repeat
        do script "xattr -r -d com.apple.quarantine" & filesString
    end tell
    return input
end run

Assurez-vous que "fichiers ou dossiers" est sélectionné pour "Service reçoit sélectionné". Assurez-vous que "Finder" est sélectionné pour "dans".

puis cliquez sur enregistrer et nommez le fichier "unquarantine". Allez dans le dossier ou le fichier que vous voulez supprimer de la quarantaine, faites un clic droit et sélectionnez "unquarantine".

https://forums.macrumors.com/threads/%E2%80%9Cverifying%E2%80%9D-upon-opening-every-file.2065395/page-2#post-25134721

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X