Wie entferne ich xattr com.apple.quarantine aus allen .webarchive-Dateien mit diesem erweiterten Attribut?

Verteilt auf mehrere Dateisysteme Ich habe zahlreiche .webarchive-Dateien, die von OmniWeb gespeichert wurden. Also zum Beispiel:

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;

Diese Dateien werden als von einem nicht identifizierten Entwickler behandelt. Ich kann jedes mit einem Control-Klick öffnen, aber es ist mühsam.

Also hätte ich gerne einen Befehl, wahrscheinlich mit find(1) , um alle diese erweiterten Attribute zu entfernen .

Antworten (3)

find . -iname '*.webarchive' -print0 | xargs -0 xattr -d com.apple.quarantine
  • entfernt ( xattr -d ) das erweiterte Attribut com.apple.quarantine
  • aus allen Dateien mit der Erweiterung .webarchive ( -iname '*.webarchive' )
  • befindet sich im aktuellen Verzeichnis und seinen Unterverzeichnissen ( . -Tiefe , wobei die -Tiefe impliziert ist)
  • Durchlaufen von xargs ( -print0 | xargs -0 ), um Probleme mit Dateinamen zu vermeiden, die Leerzeichen und andere Sonderzeichen enthalten (ein ähnliches Ziel kann mit leicht reduzierter Effizienz erreicht werden, indem verwendet wird find . -iname '*.webarchive' -exec xattr -d '{}' \;).

Erläuterung des Wirkungsgradunterschieds:

Wann immer die Syntax dies zulässt, wie in diesem Fall, baut xargs eine oder mehrere Befehlszeilen wie zxattr -d com.apple.quarantine /path/to/file1.webarchive /path/to/fileN.webarchive

während die meiner Meinung nach leichter zu merkende find-only-Version den Befehl jedes Mal wiederholt:xattr -d com.apple.quarantine /path/to/file1.webarchive ; xattr -d com.apple.quarantine /path/to/fileN.webarchive

findwird die gleiche effiziente Dateipfad-Zusammenstellung durchführen, wenn Sie sie mit \+anstelle von \;.

Hier ist eine automatisiertere Möglichkeit, dies zu erreichen:

Automator öffnen - "Service" auswählen

füge dies ein

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

Stellen Sie sicher, dass „Dateien oder Ordner“ für „Dienst empfängt ausgewählt“ ausgewählt ist. Stellen Sie sicher, dass "Finder" für "in" ausgewählt ist

Klicken Sie dann auf Speichern und nennen Sie es Unquarantine, gehen Sie zu dem Ordner oder der Datei, die Sie aus der Quarantäne entfernen möchten, klicken Sie mit der rechten Maustaste und wählen Sie Unquarantine

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

Die Version von xattr, die ich auf meinem macOS 11.6 habe, behauptet, einen Schalter -r zu haben

-r: rekursiv handeln

Sie sollten also in der Lage sein, zu verwenden

xattr -d com.apple.quarantine -r file.webarchive
Viel bequemer, das funktionierte auf 12.6:xattr -d com.apple.quarantine -r my_dir/
12.5 wurde noch nicht einmal veröffentlicht! Wie geht es dir am 12.6? Wie auch immer, danke, ich habe meine Antwort so bearbeitet, dass sie das Attribut enthält.
der fetteste Finger, 12,4 ist das, was meine kleinen Würstchen tippen wollten