通过 Automator 或命令行操作 Mac OS X 文件图标

通过 Automator 或命令行操作 Mac OS X 文件图标

有没有办法通过 Automator 或终端来操作 Mac OS X 文件上的图标?

就我而言,我想从大量文件中删除自定义图标(即与在图标上执行“获取信息”和“编辑”->“剪切”相同)。

答案1

我早在 2007 年就问过这个问题。3 个 OS X 工具的组合可以做到这一点。您需要安装开发人员工具,然后查看:/Developer/Tools/Rez、DeRez 和 SetFile。

您可以使用“sips”为图像文件赋予其自身的自定义图标(“sips”作用于原始文件,因此在副本上操作可能更安全):

/bin/cp imagefile.jpg donorfile.jpg
/usr/bin/sips -i donorfile.jpg

如果您只是想为图像文件添加其自身的缩略图自定义图标,那么您可以就此停止。

否则,如果您安装了“开发人员”/“X Code”工具,则可以使用“DeRez”和“Rez”来操作资源,将新创建的“icns”资源复制到文件中:

/Developer/Tools/DeRez -only icns donorfile.jpg > tempicns.rsrc

然后将临时文件复制到接收方文件的 icns 资源中,并设置自定义图标文件属性:

/Developer/Tools/Rez -append tempicns.rsrc -o recipientfile.xyz
/Developer/Tools/SetFile -a C recipientfile.xyz

最后,重新启动“Finder”即可查看更改:

/usr/bin/osascript -e 'tell application "Finder" to quit' -e 'delay 2' -e 'tell application "Finder" to activate'

原始问答主题:http://forums.macosxhints.com/showpost.php?p=372418&postcount=7

答案2

我不确定 Automator,但有可能可可使用

[[NSWorkspace sharedWorkspace] setIcon:nil
                               forFile:@"/path/to/file"
                               options:0];

或者作为一个简单的 Python 脚本:

#!/usr/bin/python

from AppKit import NSWorkspace
import sys

for path in sys.argv[1:]:
    NSWorkspace.sharedWorkspace().setIcon_forFile_options_(None, path, 0)

答案3

谢谢你的 Python 脚本。我制作了一个版本,将图标提取为 jpeg

#!/usr/bin/python
# python script that extract an icon from an OSX file and save it at jpeg

from AppKit import *
import sys

for path in sys.argv[1:]:
NSBitmapImageRep.imageRepWithData_(NSWorkspace.sharedWorkspace().iconForFile_(path).TIFFRepresentation()).representationUsingType_properties_(NSJPEGFileType, None).writeToFile_atomically_(path+".jpg", None)

答案4

xattr如果文件具有与之关联的元数据,则会删除自定义图标,因为我尝试过删除元数据,但只删除了自定义图标。但是,请检查除了标签中的自定义图标之外,文件是否还有其他关联的元数据com.apple.Finder。操作方法是:

xattr -d com.apple.Finder filename

更多选项:

xattr --help

如果您在文件上使用的权限后面xattr找到标记,则可以检查文件是否已关联。同样,除了与文件关联的自定义图标外,我没有其他任何东西,上面的命令将其巧妙地删除了,也许您的文件不仅仅有与此标签关联的自定义图标。我不是元数据方面的专家。@ls -l

相关内容