Аномалия файловой системы OS X: «призрак»? в именах файлов и неожиданных символических ссылках

0

Я никогда не видел этого раньше - только нашел, потому что 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:

снимок экрана результатов поиска

Кто-нибудь в 2019 году имеет представление о том, что здесь происходит?

Gr3go
источник
1
Что вы получаете, ls *oomsday* | od -cнапример?
Йорик
0000000 0 2 357 273 277 Дн. m 0000020 p 3 \ n 0000023 Интересно, так ли это сообщение о том, что '?' символ хранится как 357 273 277?
Gr3go
2
@ Gr3go И наоборот: восьмеричное 357 273 277 (= шестнадцатеричное ef bb bf) на самом деле находится в имени файла, но lsпоказывает его как "?" потому что это не нормальный персонаж. Фактически, это знак порядка следования байтов UTF-8 , который на самом деле не имеет никакого дела в имени файла (хотя это не является строго незаконным). Я предполагаю, что это как-то в названии трека в .mp3, и iTunes просто слепо использовал это в имени файла. Удаление и повторный ввод названия дорожки в окне «Информация о песне» в iTunes может исправить это.
Гордон Дэвиссон
Невероятно, но, хотя я «чистил» дубликаты записей из моих объединенных резервных копий, iTunes уничтожил почти весь каталог Nero, заявив, что они дубликаты. Так что я пока не могу проверить твою идею, но буду. iTunes все еще сильно запутан. Необходимо выяснить, есть ли в этом беспорядке еще символические ссылки. Пришлось отойти / раздражен.
Gr3go
FTR, переписать файл iTunes не получилось ... однако переименование из @Yoric сработало. Просто нужно разрешить конфликты имен папок, а затем получить надежную резервную копию. Спасибо всем!
Gr3go

Ответы:

1

Как правильно сказал @Gordon Davisson, эта последовательность байтов соответствует символу Unicode спецификации, закодированной в 8 битах:

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

Для массового удаления это:

  1. Получить Homebrew, если у вас его еще нет
  2. Получить команду переименования с brew install rename
  3. Чтобы удалить этот символ спецификации в каждом имени файла вашей музыкальной папки: 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удобна, чтобы показать эти точные коды, когда вы запутались.

Yoric
источник
Это сработало чтобы убрать? в файлах и папках (с небольшими изменениями). Спасибо. _ / | \ _
Gr3go
К сожалению, это не решит проблему должным образом, поскольку спецификация по-прежнему будет в тегах id3, и поэтому в следующий раз, когда iTunes повторно проверит файлы, они будут соответствующим образом переименованы. Также это означает, что iTunes на самом деле не найдет файлы в поиске, потому что он соответствует только целым словам.
пушистый
0

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}'

(Я не помню, где я нашел это - заслуга этого автора будет приписана).

Если вы видите ошибки -48 и -8062 в музыке iTunes, то iTunes является виновником. Отключайте организацию папок iTunes, пока все не станет прямо. Сделайте резервную копию, а затем снова включите ее.

введите описание изображения здесь

Gr3go
источник