Bagaimana cara menghapus xattr com.apple.quarantine dari semua file .webarchive dengan atribut yang diperluas itu?

13

Tersebar di beberapa sistem file Saya memiliki banyak file .webarchive yang disimpan oleh OmniWeb. Jadi misalnya:

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;

File-file tersebut diperlakukan sebagai dari pengembang yang tidak dikenal. Saya dapat membuka masing-masing dengan Kontrol-klik tetapi itu membosankan.

Jadi saya ingin perintah, mungkin melibatkan find (1) , untuk menghapus semua atribut yang diperluas .

Graham Perrin
sumber

Jawaban:

21
find . -iname '*.webarchive' -print0 | xargs -0 xattr -d com.apple.quarantine
  • akan menghapus ( xattr -d ) atribut extended com.apple.quarantine
  • dari semua file dengan ekstensi .webarchive ( -iname '* .webarchive' )
  • terletak di direktori saat ini dan subdirektori ( . -depth , di mana -depth tersirat)
  • melalui xargs ( -print0 | xargs -0 ) untuk menghindari masalah dengan nama file yang mengandung spasi dan karakter khusus lainnya (tujuan serupa dapat dicapai dengan efisiensi yang sedikit berkurang dengan menggunakan find . -iname '*.webarchive' -exec xattr -d '{}' \;).

Penjelasan perbedaan efisiensi:

Setiap kali sintaks memungkinkan untuk itu seperti dalam kasus ini, xargs merakit satu atau lebih baris perintah seperti xattr -d com.apple.quarantine /path/to/file1.webarchive /path/to/fileN.webarchive

sedangkan menurut pendapat saya lebih mudah diingat find- hanya versi yang mengulang perintah setiap kali:xattr -d com.apple.quarantine /path/to/file1.webarchive ; xattr -d com.apple.quarantine /path/to/fileN.webarchive

Ryccardo
sumber
1
findakan melakukan perakitan filepath efisien yang sama jika Anda mengakhirinya dengan \+bukan \;.
Slipp D. Thompson
0

di sini adalah cara yang lebih otomatis untuk mencapai ini:

buka automator - pilih "layanan"

rekatkan ini

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

Pastikan "file atau folder" dipilih untuk "Layanan menerima yang dipilih". Pastikan "Pencari" dipilih untuk "dalam"

lalu tekan simpan dan beri nama tidak karantina, buka folder atau file yang ingin Anda hapus dari karantina dan klik kanan dan pilih tidak karantina

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

Grand Wizard Zippy
sumber