В файловой системе, где имена файлов находятся в UTF-8, у меня есть файл с ошибочным именем; оно отображается как:, D�sinstallerфактическое имя в соответствии с zsh:, D$'\351'sinstallerLatin1 для Désinstaller, само по себе французское варварство для «удаления». Zsh не совпал бы с этим, [[ $file =~ '^.*$' ]]но совпал бы с глобусом *- это поведение, которое я ожидаю.
Теперь я все еще ожидаю найти его во время работы find . -name '*'- на самом деле, я бы никогда не ожидал, что имя файла не пройдет этот тест. Тем не менее, с LANG=en_US.utf8, файл не отображается, и я должен установить LANG=C(или en_US, или '') для его работы.
Вопрос: Что такое реализация и как я мог предсказать этот результат?
Информация: Arch Linux 3.14.37-1-lts, find (GNU findutils) 4.4.2
[[ $file =~ '^.*$' ]]не указывать recodeимя файла, но сейчас я посмотрю, convmvесли это будет необходимо. Спасибо.
convmvконвертировать имена файлов в UTF-8?