Entfernen von xattr com.apple.quarantine aus allen .webarchive-Dateien mit diesem erweiterten Attribut

13

Über mehrere Dateisysteme verteilt 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 wie von einem unbekannten Entwickler behandelt. Ich kann jedes mit einem Control-Klick öffnen, aber es ist langweilig.

Ich hätte also gerne einen Befehl, der wahrscheinlich find (1) beinhaltet , um alle diese erweiterten Attribute zu entfernen .

Graham Perrin
quelle

Antworten:

21
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 ( . -depth , wobei -depth 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 etwas verringerter Effizienz erreicht werden find . -iname '*.webarchive' -exec xattr -d '{}' \;).

Erklärung des Wirkungsgradunterschieds:

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

während die meiner findmeinung nach leichter zu merkende version den befehl jedes mal wiederholt:xattr -d com.apple.quarantine /path/to/file1.webarchive ; xattr -d com.apple.quarantine /path/to/fileN.webarchive

Ryccardo
quelle
1
findwird die gleiche effiziente Dateipfad-Assemblierung durchführen, wenn Sie sie mit \+anstelle von beenden \;.
Slipp D. Thompson
0

Hier ist eine automatisierte Methode, um dies zu erreichen:

Öffne Automator - wähle "Service"

Fügen Sie 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 geben Sie der Datei den Namen "Unquarantäne". Wechseln Sie zu dem Ordner oder der Datei, die Sie aus der Quarantäne entfernen möchten, und klicken Sie mit der rechten Maustaste, und wählen Sie "Unquarantäne" aus

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

Grand Wizard Zippy
quelle