Come rimuovere xattr com.apple.quarantine da tutti i file .webarchive con quell'attributo esteso?


13

Distribuito su più file system, ho numerosi file .webarchive salvati da OmniWeb. Quindi per esempio:

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;

Tali file vengono trattati come da uno sviluppatore non identificato. Posso aprirli tutti con un clic Control ma è noioso.

Quindi vorrei un comando, probabilmente che coinvolge find (1) , per rimuovere tutti questi attributi estesi .

Risposte:


21
find . -iname '*.webarchive' -print0 | xargs -0 xattr -d com.apple.quarantine
  • rimuoverà ( xattr -d ) l' attributo esteso com.apple.quarantine
  • da tutti i file con estensione .webarchive ( -iname '* .webarchive' )
  • situato nella directory corrente e nelle sue sottodirectory ( . -depth , dove è implicito il -depth)
  • passare attraverso xargs ( -print0 | xargs -0 ) per evitare problemi con nomi di file contenenti spazi e altri caratteri speciali (un obiettivo simile può essere raggiunto con efficienza leggermente ridotta usando find . -iname '*.webarchive' -exec xattr -d '{}' \;).

Spiegazione della differenza di efficienza:

Ogni volta che la sintassi lo consente come in questo caso, xargs assembla una o più righe di comando come xattr -d com.apple.quarantine /path/to/file1.webarchive /path/to/fileN.webarchive

mentre nella mia opinione più facile da ricordare, findsolo la versione ripete il comando ogni volta:xattr -d com.apple.quarantine /path/to/file1.webarchive ; xattr -d com.apple.quarantine /path/to/fileN.webarchive


1
findeseguirà lo stesso efficiente assemblaggio filepath se lo si termina con \+invece di \;.
Slipp D. Thompson,

0

ecco un modo più automatizzato per ottenere questo risultato:

apri automatore - seleziona "servizio"

incolla questo

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

Assicurarsi che "file o cartelle" sia selezionato per "Il servizio riceve selezionato". Assicurati che "Finder" sia selezionato per "in"

quindi premi Salva e denominalo senza quarantena, vai alla cartella o al file che desideri rimuovere dalla quarantena e fai clic con il pulsante destro del mouse e seleziona non quarantena

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.