如何从具有扩展属性的所有.webarchive文件中删除xattr com.apple.quarantine?


13

分布在多个文件系统中,我有OmniWeb保存的许多.webarchive文件。因此,例如:

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)的命令,以删除所有这些扩展属性

Answers:


21
find . -iname '*.webarchive' -print0 | xargs -0 xattr -d com.apple.quarantine
  • 将删除(xattr -dcom.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

确保为“选择服务接收”选择了“文件或文件夹”。确保为“中”选择了“查找器”

然后单击“保存”并将其命名为“ unquarantine”,转到要从隔离区中删除的文件夹或文件,然后右键单击并选择“ unquarantine”

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.