很简单,首先你应该知道的是有关 OS X 下文件属性的概念。在 OS X 中,文件会被赋予属性,这些属性会被不同的应用程序或系统获知用于判断文件类型或获取文件相关信息。这个来源,英文为 Where Froms,是由一个名为 com.apple.metadata:kMDItemWhereFroms扩展属性 (eXtended Attributes) 所控制。你可以在终端尝试执行

ls -a@el team.jpg

com.apple.metadata:kMDItemDownloadedDate	    53
com.apple.metadata:kMDItemOMUserTagTime	    50
com.apple.metadata:kMDItemOMUserTags	    42
com.apple.metadata:kMDItemWhereFroms	   192
com.apple.quarantine	    61

看到这个属性(如以上结果)。你可以直接使用如下命令查看这个属性的值:

mdls team.jpg

{
…
    kMDItemWhereFroms = (
        "http://xxx.com/2/",
        "http://xxx.com/1/"
    )
…
}

以上的显示,即你在 Finder 中看到的来源。你也可以使用如下命令,查看它的真实描述,使用如下命令:

xattr -l team.jpg

com.apple.metadata:kMDItemWhereFroms:
00000000  62 70 6C 69 73 74 30 30 A2 01 02 5F 10 4E 68 74  |bplist00..._.Nht|
00000010  74 70 3A 2F 2F 75 70 6C 6F 61 64 2E 61 70 69 2E  |tp://upload.api.|
00000020  77 65 69 62 6F 2E 63 6F 6D 2F 32 2F 6D 73 73 2F  |weibo.com/2/mss/|
00000030  6D 73 67 65 74 3F 73 6F 75 72 63 65 3D 33 38 31  |msget?source=381|
00000040  38 32 31 34 37 34 37 26 66 69 64 3D 33 36 38 37  |8214747&fid=3687|
00000050  36 39 36 31 37 36 36 32 31 36 30 37 5F 10 3E 68  |696176621607_.>h|
00000060  74 74 70 3A 2F 2F 77 65 69 62 6F 2E 63 6F 6D 2F  |ttp://weibo.com/|
00000070  6D 65 73 73 61 67 65 2F 68 69 73 74 6F 72 79 3F  |message/history?|
00000080  75 69 64 3D 31 37 36 30 36 34 32 36 35 34 26 6E  |uid=1760642654&n|
00000090  61 6D 65 3D 5F 44 72 59 6F 75 6E 67 5F 08 0B 5C  |ame=_DrYoung_...|
000000A0  00 00 00 00 00 00 01 01 00 00 00 00 00 00 00 03  |................|
000000B0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9D  |................|
000000c0

以上是个示例结果,你的结果于此不同。这里可以看出,它其实是一个 Binary Plist (二进制 Property List,所以你会看到以 bplist00 开头的字样) 文件。那么这个文件的内容可以用如下命令查看:

xattr -p com.apple.metadata:kMDItemWhereFroms team.jpg  | xxd -r -p | plutil -convert xml1 - -o -

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
	<string>http://xxx.com/2</string>
	<string>http://xxx.com/1</string>
</array>
</plist>

以上内容是背景知识介绍,

——————————————————————————————————————————

楼主的问题,只需要一个命令即可搞定,即删除这个属性即可:

xattr -d com.apple.metadata:kMDItemWhereFroms team.jpg

执行完毕后,Relaunch 一下 Finder,搞定收工!

使用命令非常麻烦,如果你需要批量处理的话,我建议楼主用如下方法:

  1. 写一个程序,使用 getxattrsetxattr 这两个函数可以完美搞定这个问题。
  2. 写一个 Shell Script,直接循环读入指定位置的图片,批量删除。
  3. 鉴于对楼主水平的贸然揣测,我推荐你使用 Automator 创建工作流。方法很简单,Automator 打开后创建一个流程、服务 或 App 均可。然后在 Finder 中找到 获取Finder 选中的项目 组件添加到工作流中。然后选取一个 执行 Shell 脚本 的组件添加到工作流,点击组件右上角选取从上一个组件获得输入。然后在 执行 Shell 脚本 组件中运用以上命令即可搞定。

* 以上组件名是我临时翻译的,我不知道它在中文环境下叫什么 🙁

— 完 —

本文作者:王飞

【知乎日报】
你都看到这啦,快来点我嘛 Σ(▼□▼メ)
延伸阅读:
OS X 中的「预览」原生支持多少种文件?
OS X 有哪些令人无法忍受的缺点?

分享到