¿Cómo eliminar xattr com.apple.quarantine de todos los archivos .webarchive con ese atributo extendido?

12

Distribuido en varios sistemas de archivos Tengo numerosos archivos .webarchive que fueron guardados por OmniWeb. Así por ejemplo:

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;

Esos archivos se tratan como si fueran de un desarrollador no identificado. Puedo abrir cada uno con un Control-clic pero es tedioso.

Así que me gustaría un comando, que probablemente incluya encuentra (1) , para eliminar todos estos atributos extendidos .

    
pregunta Graham Perrin 30.03.2013 - 16:35

2 respuestas

19
find . -iname '*.webarchive' -print0 | xargs -0 xattr -d com.apple.quarantine
  • eliminará ( xattr -d ) el com.apple.quarantine atributo extendido
  • de todos los archivos con una extensión de .webarchive ( -iname '* .webarchive' )
  • ubicado en el directorio actual y sus subdirectorios (. -depth , donde está implícito -depth)
  • pasar por xargs ( -print0 | xargs -0 ) para evitar problemas con los nombres de archivos que contienen espacios y otros caracteres especiales (se puede lograr un objetivo similar con una eficiencia ligeramente reducida utilizando find . -iname '*.webarchive' -exec xattr -d '{}' \; ).

Explicación de la diferencia de eficiencia:

Siempre que la sintaxis lo permita, como en este caso, xargs ensambla una o más líneas de comando como xattr -d com.apple.quarantine /path/to/file1.webarchive /path/to/fileN.webarchive

mientras que en-mi-opinión es más fácil de recordar find -sólo la versión repite el comando cada vez: xattr -d com.apple.quarantine /path/to/file1.webarchive ; xattr -d com.apple.quarantine /path/to/fileN.webarchive

    
respondido por el Ryccardo 30.03.2013 - 16:57
0

Aquí hay una forma más automatizada de lograr esto:

abrir automator - selecciona "servicio"

pega esto

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

Asegúrese de que "archivos o carpetas" esté seleccionado para "El servicio recibe seleccionado". Asegúrate de que "Finder" esté seleccionado para "in"

luego presione guardar y nómbrelo en cuarentena, vaya a la carpeta o archivo que desea eliminar de la cuarentena, haga clic con el botón derecho y seleccione no poner en cuarentena

enlace

    
respondido por el Grand Wizard Zippy 11.10.2017 - 16:57

Lea otras preguntas en las etiquetas