Як видалити xattr com.apple.quarantine з усіх .webarchive файлів із цим розширеним атрибутом?


13

Поширення по декількох файлових системах У мене є чимало .webarchive файлів, які були збережені OmniWeb. Так, наприклад:

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;

Ці файли розглядаються як невстановлений розробник. Я можу відкрити кожен із клацанням Control, але це нудно.

Тож я хотів би команду, ймовірно, що містить Find (1) , видалити всі такі розширені атрибути .

Відповіді:


21
find . -iname '*.webarchive' -print0 | xargs -0 xattr -d com.apple.quarantine
  • видалить ( xattr -d ) розширений атрибут com.apple.quarantine
  • з усіх файлів із розширенням .webarchive ( -iname '* .webarchive' )
  • розташований у поточному каталозі та його підкаталогах ( . -depth , де мається на увазі -depth)
  • проходячи через xargs ( -print0 | xargs -0 ), щоб уникнути проблем з іменами файлів, що містять пробіли та іншими спеціальними символами (подібну ціль можна досягти з дещо зниженою ефективністю за допомогою використання find . -iname '*.webarchive' -exec xattr -d '{}' \;).

Пояснення різниці ефективності:

Кожного разу, коли синтаксис дозволяє, наприклад, у цьому випадку, xargs збирає один або кілька командних рядків, таких як xattr -d com.apple.quarantine /path/to/file1.webarchive /path/to/fileN.webarchive

при цьому, на мій погляд, легше запам’ятати find-тільки версія повторює команду кожен раз:xattr -d com.apple.quarantine /path/to/file1.webarchive ; xattr -d com.apple.quarantine /path/to/fileN.webarchive


1
findзробить те саме ефективне збирання файлового шляху, якщо ви закінчите його \+замість \;.
Сліпп Д. Томпсон

0

ось більш автоматизований спосіб досягти цього:

відкрити автоматизатор - виберіть "сервіс"

вставте це

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

Переконайтесь, що "Файли або папки" вибрано для "Вибрано службу". Переконайтесь, що "Finder" вибрано для "in"

потім натисніть кнопку "Зберегти" та назвіть її некварантиновою, перейдіть до папки чи файлу, який ви хочете вилучити з карантину, клацніть правою кнопкою миші та виберіть підкарантину

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.