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

Repartidos 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 Control-clic, pero es tedioso.

Así que me gustaría un comando, probablemente relacionado con find(1) , para eliminar todos esos atributos extendidos .

Respuestas (3)

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 ( . -profundidad , donde está implícito -profundidad)
  • pasar por xargs ( -print0 | xargs -0 ) para evitar problemas con los nombres de archivo que contienen espacios y otros caracteres especiales (se puede lograr un objetivo similar con una eficiencia ligeramente reducida usando 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, comoxattr -d com.apple.quarantine /path/to/file1.webarchive /path/to/fileN.webarchive

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

findhará el mismo ensamblaje de ruta de archivo eficiente si lo termina con \+en lugar de \;.

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

abrir automatizador - seleccione "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 "Servicio recibido seleccionado". Asegúrate de que "Finder" esté seleccionado para "en"

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

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

La versión de xattr que tengo en mi macOS 11.6 afirma tener un modificador -r

-r: actuar recursivamente

Entonces deberías poder usar

xattr -d com.apple.quarantine -r file.webarchive
Mucho más conveniente, esto funcionó en 12.6:xattr -d com.apple.quarantine -r my_dir/
¡La versión 12.5 ni siquiera ha sido lanzada! ¿Cómo estás en 12.6? De todos modos, gracias, edité mi respuesta para incluir el atributo.
el más gordo de los dedos, 12,4 es lo que mis salchichones pretendían teclear