ls: невозможно получить доступ к 'filename': такого файла или каталога нет (но файл существует)

Отформатированный в HFS + диск, подключенный к Ubuntu через подставку SATA / USB.

Файл fsck.hfsplus не сообщает о проблемах с разделом.

Попытка запустить "ls" (или что-нибудь еще) для затронутых файлов приводит к "отсутствию такого файла или каталога". Запуск "ls -lh" в папке контейнера вызывает ту же жалобу, но по-прежнему показывает файл в списке, но в следующем формате:

-rw-r--r-- 1 501 dialout   53M Mar  4 15:26 normal_file
-????????? ? ?   ?           ?            ? uncooperative_file

Меня не беспокоит право собственности 501: dialout на другие файлы (диск это с другой машины).

Это затронуло несколько файлов. Они только кажутся файлами с Unicode и / или Emoji в названии.

Я пробовал:

  • "ls" с параметрами "-b" и "-q", но ни один из них ничего не обнаружил
  • "ls -lh> ~ / tmp.txt" и редактирование в " vi "в попытке обнаружить посторонние байты в имени
  • " chown root: root filename "
  • " chmod 644 filename "

Файл отображается в выводе" ls ", и завершение табуляции заполняет его в тоже. Но любое реальное взаимодействие не работает.

Кто-нибудь может дать совет? В конечном счете, я хочу иметь возможность rsync / scp этих файлов в другой ящик (который, к сожалению, не очень хорошо работает с подставкой для диска), и я решил, что возможность ls / mv будет хорошей отправной точкой.

РЕДАКТИРОВАТЬ: Использование bash.Завершение табуляции заполняет полное имя файла, хотя и с некоторыми '???' вместо определенных символов (на данный момент не уверены в исходных символах). Локаль в исходном коде:

LANG=en_CA.UTF-8
LANGUAGE=en_CA:en
LC_CTYPE="en_CA.UTF-8"
LC_NUMERIC="en_CA.UTF-8"
LC_TIME="en_CA.UTF-8"
LC_COLLATE="en_CA.UTF-8"
LC_MONETARY="en_CA.UTF-8"
LC_MESSAGES="en_CA.UTF-8"
LC_PAPER="en_CA.UTF-8"
LC_NAME="en_CA.UTF-8"
LC_ADDRESS="en_CA.UTF-8"
LC_TELEPHONE="en_CA.UTF-8"
LC_MEASUREMENT="en_CA.UTF-8"
LC_IDENTIFICATION="en_CA.UTF-8"
LC_ALL=
0
22.06.2017, 09:52
1 ответ

macOS может кодировать имена файлов в UTF16 на HFSplus, и это означает, что вам не повезло, поскольку в Linux нет локалей UTF16. По сути, ваш язык — UTF8, и он не показывает определенные символы, есть большая вероятность, что это символы UTF16.

Мне вас жаль.

1
28.01.2020, 02:45

Теги

Похожие вопросы