В файловой системе, где имена файлов находятся в UTF-8, у меня есть файл с ошибочным именем; оно отображается как:, D�sinstaller
фактическое имя в соответствии с zsh:, D$'\351'sinstaller
Latin1 для 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?