OS X 文件系统异常:文件名中出现“幽灵‘?’”和意外的符号链接

OS X 文件系统异常:文件名中出现“幽灵‘?’”和意外的符号链接

我以前从未见过这种情况 - 只是因为 Time Machine 一直出现故障才发现它(在 Mac OS X High Sierra 10.13.6 上)。大约 7 年前有人在这里问过类似的问题,但没有解决(他没有符号链接问题):OS X 中的文件名带有问号

我多次从 Disk Utility.app 运行了磁盘修复(但没有发现或修复任何错误)。

我确定唯一存在此问题的位置是 iTunes Media/Music 文件夹,因此我压缩了整个文件夹以强制进行符号链接解析。这解决了幽灵符号链接(有些有 4 个跳转,但没有源)。备份现在运行没有错误(-48 和 -8062)。

我无法修复的是文件中的随机“?”字符。

我尝试了这里指出的解决方案:从文件名中删除问号“?” OSX这似乎是完美的,但实际上没有效果。即使在 mv 操作之后,“?”仍然存在,具体来说:

find . -type f -name '*?*' | while read f; do mv "$f" "${f//\?/}"; done

在 Finder 中,没有出现 ?,并且您无法从名称中 grep “?”,因此严格来说,该字符似乎不存在。它们仅出现在终端中:

MacBook-Pro:Welcome Reality +$ ls -lsuG
total 177456
20656 -rw-r--r--  1 User  group  10572851 Jan 12 09:31 02 ?Doomsday.mp3
14944 -rw-r--r--  1 User  group   7645727 Jan 12 09:31 03 My Eyes (G3dit).mp3
23632 -rw-r--r--  1 User  group  12093176 Jan 12 09:31 03 ?My Eyes.mp3
18768 -rw-r--r--  1 User  group   9605621 Jan 12 09:31 04 Guilt.mp3
20336 -rw-r--r--  1 User  group  10407761 Jan 12 09:31 06 ?Me and You.mp3
19968 -rw-r--r--  1 User  group  10220743 Jan 12 09:31 11 ?Must Be the Feeling.mp3
17104 -rw-r--r--  1 User  group   8749666 Jan 12 09:31 13 Promises.MP3
19920 -rw-r--r--  1 User  group  10194622 Jan 12 09:31 15 ?Won't You (Be There).mp3
21952 -rw-r--r--  1 User  group  11232230 Jan 12 09:31 17 ?Promises (Skrillex & Nero Remix).mp3
   16 -rw-r--r--  1 User  group      7366 Jan 12 09:31 AlbumArtSmall.jpg
   80 -rw-r--r--  1 User  group     35880 Jan 12 09:31 Folder.jpg
MacBook-Pro:Welcome Reality +$ find . -type f | grep ?
*[no results returned]*
MacBook-Pro:Welcome Reality +$ find . -type f | grep M
./03 My Eyes (G3dit).mp3
./03 My Eyes.mp3
./06 Me and You.mp3
./11 Must Be the Feeling.mp3
./13 Promises.MP3

以下是我在 Finder 中看到的内容:

Finder 结果的屏幕截图

2019 年还有人知道这里发生了什么吗?

答案1

正如 @Gordon Davisson 正确指出的那样,这个字节序列对应于 BOM Unicode 字符,以 8 位编码:

357 273 277 (in octal) = EF BB BF (in hexadecimal)

要批量删除它:

  1. 得到自制如果你还没有
  2. 使用以下命令获取重命名命令brew install rename
  3. 要删除音乐文件夹中每个文件名中的此 BOM 字符:find ~/Music -type f -exec rename 's/\o{357}\o{273}\o{277}//' {} \;

您可能想先在单个文件上尝试一下:

rename 's/\o{357}\o{273}\o{277}//' /path/to/file/*oomsday*

说到文件名,您不能真正相信 Finder 上看到的内容,也不能相信ls终端中的命令,因为它们只显示了所有可能代码的有限表示。od当您感到困惑时,该命令可以方便地显示这些确切的代码。

答案2

iTunes 在管理音乐方面一直比较“混乱”(例如与 WinAMP 相比),但它是免费的,并且可以使音乐保持井井有条。

@Yoric 接受了删除文件名中明显的“?”字符的正确答案,但我想为将来可能遇到此问题的其他人添加这个答案……

如果“保持 iTunes 媒体文件夹有序”选项处于打开状态,iTunes 就会开始创建符号链接和这些错误的“?”(357 273 277)_8 条目。我不知道在之前的 OS X 版本中会发生这种情况,但在 10.13 中,这种情况显然发生了。

如果 Time Machine 出现故障,请使用以下命令从终端查看日志文件:

clear; printf '\e[3J' && log show --predicate 'subsystem == "com.apple.TimeMachine"' --info --last 24h | grep -F 'eMac' | grep -Fv 'etat' | awk -F']' '{print substr($0,1,19), $NF}'

(我不记得我在哪儿找到这个——应该归功于作者)。

如果您在 iTunes 音乐中看到错误 -48 和 -8062,那么 iTunes 就是罪魁祸首。关闭 iTunes 文件夹组织,直到一切正常。进行干净备份,然后尝试再次打开它。

在此处输入图片描述

相关内容