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

13

Repartidos en varios sistemas de archivos, tengo numerosos archivos .webarchive 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 son tratados como de un desarrollador no identificado. Puedo abrir cada una con un Control-clic, pero es tedioso.

Por lo tanto, me gustaría un comando, que probablemente implique encontrar (1) , para eliminar todos esos atributos extendidos .

Graham Perrin
fuente

Respuestas:

21
find . -iname '*.webarchive' -print0 | xargs -0 xattr -d com.apple.quarantine
  • eliminará ( xattr -d ) el atributo extendido com.apple.quarantine
  • de todos los archivos con una extensión de .webarchive ( -iname '* .webarchive' )
  • ubicado en el directorio actual y sus subdirectorios ( . -depth , donde está implícita la -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 mediante el uso 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, la findversión más fácil de recordar solo repite el comando cada vez:xattr -d com.apple.quarantine /path/to/file1.webarchive ; xattr -d com.apple.quarantine /path/to/fileN.webarchive

Ryccardo
fuente
1
findhará el mismo ensamblado eficiente de ruta de archivo si lo termina con en \+lugar de \;.
Slipp D. Thompson
0

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

Automatizador abierto - seleccione "servicio"

pegar 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úrese de que "Finder" esté seleccionado para "en"

luego presione guardar y asígnele el nombre de no cuarentena, vaya a la carpeta o archivo que desea eliminar de la cuarentena y haga clic derecho y seleccione unquarantine

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

Gran mago Zippy
fuente