它是什么?

它是什么?

当我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"

有人知道这是什么吗?

答案1

它是什么?

它的名字实际上是Icon\r,其中\r是回车符0x0D。如果让 shell 在终端中自动完成路径,则会产生Icon^M^M\r

Icon^M是存在于 Finder 中具有自定义图标的所有目录中的文件。如果您更改目录的图标(例如在其获取信息通过将图像粘贴到左上角的图标中,Icon^M即可创建文件。

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

为什么看不见呢?

它在 Finder 中是不可见的,因为它的hidden属性已被设置。

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

用 进行更改chflags nohidden Icon^M

它的数据在哪里?

虽然文件的数据分支(即内容)为空(即终端中的文件大小为 0 字节),但实际的图标数据存储在文件的资源分叉

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

您可以将资源分支复制到一个文件中(例如在十六进制编辑器中查看),如下所示:

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

我如何才能查看它?

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

其格式为互联网,编码为图标资源德雷兹。如果你在十六进制编辑器中打开它并删除前 260 个字节(因此文件以icns魔法字节串开头),你可以在 Preview.app 中打开它。或者你也可以使用视图

答案2

目录中的文件Icon?包含该目录的自定义图标图像。图像本身存储在扩展文件属性中,具体来说,com.apple.ResourceFork这就是Icon?文件似乎没有长度的原因。

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

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

答案3

它是什么?

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

如何查找 Icon^M 文件

笔记:

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

如果发现假阳性,您是否应该感到偏执,然后使用:++ctrl而不是?v ctrlm

#!/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. 打开 Finder
  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 中的空文件夹?

答案4

Icon^M 文件是一个隐藏的 macOS 系统文件,用于管理包含文件夹的自定义图像。但是,用户可能会发现这些文件是出于其他原因创建的。

例如,macOS 版本的 Google Drive 会在每个文件夹中创建一个图标文件,以便跟踪同步状态。

您可以安全地删除这些文件。在终端中,从父目录运行以下命令:(确保使用 ctrl-v、ctrl-m 按键插入 ^M):

find . -type f -name 'Icon^M' -exec rm -f {} \;

相关内容