Jak usunąć xattr com.apple.quarantine ze wszystkich plików .webarchive z tym rozszerzonym atrybutem?

13

Rozłożone na wiele systemów plików Mam wiele plików .webarchive, które zostały zapisane przez OmniWeb. Na przykład:

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;

Pliki te są traktowane jak od niezidentyfikowanego programisty. Mogę otworzyć każdy za pomocą klawisza Control, ale jest to żmudne.

Chciałbym więc polecenie, prawdopodobnie obejmujące find (1) , aby usunąć wszystkie takie rozszerzone atrybuty .

Graham Perrin
źródło

Odpowiedzi:

21
find . -iname '*.webarchive' -print0 | xargs -0 xattr -d com.apple.quarantine
  • usunie ( xattr -d ) rozszerzony atrybut com.apple.quarantine
  • ze wszystkich plików z rozszerzeniem .webarchive ( -iname „* .webarchive” )
  • znajduje się w bieżącym katalogu i jego podkatalogach ( . -depth , gdzie sugerowane jest -depth)
  • przechodzenie przez xargs ( -print0 | xargs -0 ), aby uniknąć problemów z nazwami plików zawierającymi spacje i inne znaki specjalne (podobny cel można osiągnąć przy nieznacznie zmniejszonej wydajności za pomocą find . -iname '*.webarchive' -exec xattr -d '{}' \;).

Objaśnienie różnicy wydajności:

Ilekroć pozwala na to składnia, tak jak w tym przypadku, xargs tworzy jedną lub więcej linii poleceń, takich jak xattr -d com.apple.quarantine /path/to/file1.webarchive /path/to/fileN.webarchive

podczas gdy, moim zdaniem, łatwiejsza do zapamiętania find-tylko wersja powtarza polecenie za każdym razem:xattr -d com.apple.quarantine /path/to/file1.webarchive ; xattr -d com.apple.quarantine /path/to/fileN.webarchive

Ryccardo
źródło
1
findzrobi to samo wydajne składanie ścieżek plików, jeśli zakończysz je \+zamiast \;.
Slipp D. Thompson
0

Oto bardziej zautomatyzowany sposób na osiągnięcie tego:

otwórz automatyzator - wybierz „serwis”

wklej to

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

Upewnij się, że „Pliki lub foldery” są wybrane dla „Usługa otrzymała wybrane”. Upewnij się, że „Finder” jest wybrane dla „w”

następnie wciśnij Zapisz i nazwij go nie kwarantanną, przejdź do folderu lub pliku, który chcesz usunąć z kwarantanny, kliknij prawym przyciskiem myszy i wybierz nie kwarantannę

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

Wielki Czarodziej Zippy
źródło