有没有办法通过 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