У вас есть проблема с кодировкой, которая должна быть решена.
?
Отображается ls
является заполнителем и не означает, что файл с именем ?
.
Вот как воспроизвести вашу проблему, используя iconv
обычную систему Linux с настройкой utf8:
$ mkdir /tmp/test $ cd /tmp/test $ touch $(echo é | iconv -t windows-1252) # that's the eacute character $ ls ? $ ls|cat �
Последняя строка просто означает «отображается неверная кодировка utf8» и, вероятно, не может быть правильно скопирована / вставлена без потери ее информации. windows-1252
это просто пример. Это могло быть много других (например:) iso-8859-1
. Информация все еще там:
$ ls|iconv -f windows-1252 é
Поэтому, когда вы выясните, какая кодировка использовалась для записи этих файлов в Linux (попробуйте iconv -l|egrep -i 'win|iso-8859'
найти список возможных кандидатов), вы можете попробовать переименовать пакет. Будьте осторожны, хотя пример может работать, он может не сработать для другого файла.
Пример переименования:
ENCODING="windows-1252" # once the right encoding was found for file in *; do dest="$(printf '%s' "$file" | iconv -f "$ENCODING")" mv -i "$file" "$dest.new" mv -i "$dest.new" "$dest" done