Como remover xattr com.apple.quarantine de todos os arquivos .webarchive com esse atributo estendido?


13

Espalhados por vários sistemas de arquivos, tenho inúmeros arquivos .webarchive que foram salvos pelo OmniWeb. Então, por exemplo:

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;

Esses arquivos são tratados como de um desenvolvedor não identificado. Eu posso abrir cada um com um Control-clique, mas é tedioso.

Então, eu gostaria de um comando, provavelmente envolvendo find (1) , para remover todos esses atributos estendidos .

Respostas:


21
find . -iname '*.webarchive' -print0 | xargs -0 xattr -d com.apple.quarantine
  • removerá ( xattr -d ) o atributo estendido com.apple.quarantine
  • de todos os arquivos com uma extensão .webarchive ( -iname '* .webarchive' )
  • localizado no diretório atual e seus subdiretórios ( . -pth , onde está implícito)
  • passando por xargs ( -print0 | xargs -0 ) para evitar problemas com nomes de arquivos que contenham espaços e outros caracteres especiais (um objetivo semelhante pode ser alcançado com eficiência levemente reduzida usando find . -iname '*.webarchive' -exec xattr -d '{}' \;).

Explicação da diferença de eficiência:

Sempre que a sintaxe permitir, como neste caso, o xargs monta uma ou mais linhas de comando, como xattr -d com.apple.quarantine /path/to/file1.webarchive /path/to/fileN.webarchive

enquanto na findversão mais fácil de lembrar, na minha opinião, repete o comando toda vez:xattr -d com.apple.quarantine /path/to/file1.webarchive ; xattr -d com.apple.quarantine /path/to/fileN.webarchive


1
findfará a mesma montagem eficiente de caminho de arquivo se você terminar com ele em \+vez de \;.
Slipp D. Thompson

0

Aqui está uma maneira mais automatizada de fazer isso:

automator aberto - selecione "serviço"

cole isso

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

Verifique se "arquivos ou pastas" está selecionado para "O serviço recebe selecionado". Verifique se "Localizador" está selecionado para "em"

Em seguida, clique em Salvar e dê o nome de quarentena, vá para a pasta ou arquivo que você deseja remover da quarentena e clique com o botão direito do mouse e selecione

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.