У меня есть много файлов, которые пришли из архива Windows. Файлы имеют акценты в именах, таких как:

«Partyku?y no.doc "(это строка, отображаемая в терминале Linux)

Как распаковать или переименовать с правильными символами?

ОБНОВИТЬ:

Во-первых, я извлекаю zip в 'win xp' .. результат:

мусор в именах

Следующий шаг, распакуйте в «win 7» .. результат:

идеальные имена.

Поэтому я скачал 7z для Windows и сжал как 7z и как zip (оба с 7z)

Затем поместите файлы в Linux и распакуйте их с помощью '7z x ..' на файлы ..

7z выплевывает правильные имена, но .zip нет.

Мне повезло получить доступ к «win 7», что если нет? Замена символов, как rody_o предложить?

3 ответа3

1

Выясните, в какой кодировке находятся имена файлов, и используйте convmv для их переименования.

1

Я подозреваю, что реальный вопрос здесь заключается в том, «как я могу передавать файлы, используя zip, не повреждая имена файлов не-ASCII?». Если это реальная проблема, которую вы пытаетесь решить, попробуйте использовать параметр командной строки « -UN=UTF8 » для zip при создании архива. Это заставит zip хранить имена файлов, используя UTF-8, который должен сохранять не-ASCII символы.

0

Ну, если вы уверены, что это действительно имя файла, а не конфликт кодировки, вы можете переименовать такие файлы с помощью

rename s/REGEX/REPLACEMENT/ *.doc

или, немного более эстетичный способ,

rename s,REGEX,REPLACEMENT, *.doc

в этом случае вам не нужно избегать таких вещей, как ? ,

REGEX и REPLACEMENT регулярные выражения - rename в основном sed для переименования файлов.

При массовом переименовании с rename всегда рекомендуется запускать rename с параметром -n прежде чем выполнять реальное переименование. Эта опция означает «пробный запуск», поэтому просто напечатайте, что будет сделано, если удалить -n .

Обязательно прочитайте man rename и / или man sed перед экспериментированием.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .