图标?OS X桌面上的文件


82

当我ls从终端(通过使用ls ~/Desktop)访问我的桌面时,看到一个名为的文件Icon?。据我所知,它是空的(nano Icon?什么也没显示)。它没有显示在我的实际桌面上,并open Icon?显示Finder警报

此项目由Mac OS X使用,无法打开

这是来自的输出mdls Icon?

kMDItemContentType         = ""
kMDItemFSContentChangeDate = 2009-09-23 13:32:52 -0600
kMDItemFSCreationDate      = 2009-09-20 07:27:46 -0600
kMDItemFSCreatorCode       = "MACS"
kMDItemFSFinderFlags       = 16384
kMDItemFSHasCustomIcon     = 0
kMDItemFSInvisible         = 1
kMDItemFSIsExtensionHidden = 0
kMDItemFSIsStationery      = 0
kMDItemFSLabel             = 0
kMDItemFSName              = "Icon "
kMDItemFSNodeCount         = 0
kMDItemFSOwnerGroupID      = 20
kMDItemFSOwnerUserID       = 501
kMDItemFSSize              = 0
kMDItemFSTypeCode          = "icon"

有谁知道这是什么吗?


6
真正的问题是:有没有一种方法可以阻止操作系统在每个目录中创建这些该死的文件?它们出现在Dropbox中确实让我很烦。
JeremyKun

1
@JeremyKun 2017在这里,我很想知道答案。
转义符

这些文件不会在“每个目录”中自动创建,除非您具有导致它们创建的讨厌的软件。另外-它们可能会惹恼您,但它们也具有功能。这是MacOS中“自定义用户图标”的实现。如果用户选择粘贴自己喜欢的任何图像作为某个文件或目录的图标-它最终将成为隐藏的iCon吗?文件。删除它们只会删除自定义图标。
Motti Shneor

Answers:


95

它是什么?

它的名字实际上是Icon\r\r被回车0x0D。如果让壳自动完成在终端路径,它的产量Icon^M^M\r

Icon^M是存在于Finder中带有自定义图标的所有目录中的文件。如果您在目录的“ 获取信息”对话框中更改目录的图标,方法是将图像粘贴到左上角的图标中,则将Icon^M创建文件。

更改卷的图标会创建一个隐藏.VolumeIcon.icns文件。

为什么看不见?

由于hidden已设置其属性,因此它在Finder中不可见。

$ ls -lO Icon^M 
-rw-r--r--@ 1 danielbeck  staff  hidden 0 24 Apr 23:29 Icon?

用更改chflags nohidden Icon^M

它的数据在哪里?

当文件的数据分支(即内容)为空(即Terminal中文件大小为0字节)时,实际的图标数据存储在文件的资源分支中

$ ls -l@ Icon^M
    com.apple.ResourceFork  350895 

您可以将资源派生复制到文件中(例如在十六进制编辑器中查看):

$ cp Icon^M/..namedfork/rsrc Icondata

 我怎么看?

获取图像的最简单方法是将图标所在的文件夹的“ 获取信息”对话框中的图标复制到剪贴板中,然后在“预览”(Cmd-N)中从剪贴板中创建新图像。这是一张icns图片,然后默认情况下。

根据Mac OS版本的XnView,其格式为JPEG 2000 ,您应该可以使用该程序打开它。它似乎无法与其他应支持JPEG 2000的程序一起使用,因此此格式信息可能是错误的。



3
实际上,Apple实际上经常在资源分支中隐藏其数据。我永远无法确定它是否整洁或误导。
卢卡萨2011年

2
这是一致的。毕竟图标资源派生的内容。
JdeBP 2011年

3
您会错过一棵树木的草,蚱hopper。除了查看卷图标文件之外,还可以查看大量的案例,在传统情况下,至少在MacOS中,至少在资源分叉中可以找到图标。如果您正在尝试全部采用现代风格,而我们现在不需要Unix,那么我们应该真正改正答案,改用现代风格和/..namedfork/rsrc后缀生成警告消息的对象之一。(-:
JdeBP

2
我惊人的精神 力量告诉我,所有这些的printf小号去到系统日志。
JdeBP 2011年

10

一个Icon?目录内文件中包含该目录自定义图标的图像。图像本身存储在扩展文件属性(特别是)中com.apple.ResourceFork,这就是Icon?文件似乎没有长度的原因。

您可以使用检索数据$ xattr -p com.apple.ResourceFork Icon?或使用来查看所有扩展属性$ xattr -l Icon?

至少在Snow Leopard上,它们似乎已被系统图标淘汰(对于〜/ Desktop /,在图标视图中查看主目录时该图标将可见。)但对于两个自定义目录图标在我的系统上,它仍然存在。


Icon^M据我所知,“系统图标”从未创建过文件。使用自定义图标重命名这些特殊文件夹(最容易使用~/Applications,因为默认情况下它根本不存在),并且它们的图标也会随之更改。
丹尼尔·贝克

@Daniel Yup; 我想OP会为其桌面文件夹提供一个自定义图标。
NReilingh 2011年

5

它是什么?

它是存储用于“文件夹”图标的图像的文件,只有将图像手动加载到文件夹后,我才能创建该文件。默认情况下,我的系统上没有这些。

如何找到Icon ^ M文件

注意:

这与.icns文件扩展名不同。

您是否应该对是否发现误报而产生偏执,然后使用:ctrl+ v ctrl+ m代替?

#!/bin/bash
# =============================================================================
# MAC OSX HIGH SIERRA 10.13.4 (17E199)
# Terminal: Version: 2.8.2 64-Bit (Intel): Yes
# Terminal Location: /Applications/Utilities/Terminal.app
# =============================================================================

echo 'Searching Documents for Icon files...'
find ~/Documents -type f -name 'Icon?' -print;

如何创建Icon ^ M文件

  1. 打开查找器
  2. 右键单击文件夹
  3. 按住Option键盘上的
  4. 选择显示检查器
  5. 将图像拖到左上角的文件夹图标。
  6. ls -lah在该目录上 运行
    1. 您应该看到:
      • -rw-r--r--@ 1 username staff 0B May 13 22:23 Icon?

如何删除Icon ^ M文件

如果您出于任何原因需要将其删除...意外地说是故意对其进行测试。

#!/bin/bash
# =============================================================================
# MAC OSX HIGH SIERRA 10.13.4 (17E199)
# Terminal: Version: 2.8.2 64-Bit (Intel): Yes
# Terminal Location: /Applications/Utilities/Terminal.app
# =============================================================================

echo 'Removing Icon files from Documents...'
find ~/Documents -type f -name 'Icon?' -print -delete;

我的帖子中关于另一个问题的参考:

如何在Mac OS X中删除空文件夹?


1
+1,因为已接受的答案缺少“如何删除”。不,它们在通过minGW的bash从Windows访问时没有用。
gbarry
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.