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

12

Diffusione su più file system Ho numerosi file .webarchive che sono stati 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;

Quei file sono trattati come da uno sviluppatore non identificato. Posso aprire ognuno con un clic di controllo ma è noioso.

Quindi mi piacerebbe un comando, probabilmente che coinvolge trova (1) , a rimuovi tutti questi attributi estesi .

    
posta Graham Perrin 30.03.2013 - 16:35
fonte

2 risposte

19
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 -depth)
  • passando attraverso xargs ( -print0 | xargs -0 ) per evitare problemi con nomi di file contenenti spazi e altri caratteri speciali (un obiettivo simile può essere ottenuto con un'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 l'in-my-opinion più facile da ricordare find -l'ultima versione ripete il comando ogni volta: xattr -d com.apple.quarantine /path/to/file1.webarchive ; xattr -d com.apple.quarantine /path/to/fileN.webarchive

    
risposta data 30.03.2013 - 16:57
fonte
0

qui c'è un modo più automatico per realizzare questo:

apri automator - 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 "Servizio ricevuto selezionato". Assicurati che "Finder" sia selezionato per "in"

quindi premi Salva e assegna un nome unquarantine, vai alla cartella o al file che vuoi rimuovere dalla quarantena e fai clic con il pulsante destro del mouse e seleziona unquarantine

link

    
risposta data 11.10.2017 - 16:57
fonte

Leggi altre domande sui tag