我有许多来自 Windows 压缩文件的文件。这些文件的名称中有重音符号,例如:
“partyku?y no.doc”(这是在linux终端中显示的字符串)
如何解压或者用正确的字符重命名?
更新:
首先我在‘win xp’中提取 zip。结果:
名称中的垃圾
下一步,在'win 7'中解压..结果:
完美的名字。
所以我下载了适用于 Windows 的 7z,并将其压缩为 7z 和 zip(均使用 7z)
然后将文件放入 Linux 并使用文件上的“7z x ..”进行提取。
7z 可以输出正确的名称,但 .zip 则不行。
我很幸运能够访问“win 7”,如果没有怎么办?像 rody_o 建议的那样替换字符?
答案1
找出文件名采用的编码并使用convmv
其重命名。
答案2
我怀疑这里真正的问题是“如何使用 zip 传输文件而不破坏非 ASCII 文件名?”。如果这是您要解决的真正问题,请在创建存档时尝试使用“ -UN=UTF8
”命令行选项zip
。这将强制 zip 使用 UTF-8 存储文件名,这应该会保留非 ASCII 字符。
答案3
好吧,如果你确定真的是文件名,而不是一些编码冲突,那么你可以批量重命名这些文件
rename s/REGEX/REPLACEMENT/ *.doc
或者,用更美观一点的方式,
rename s,REGEX,REPLACEMENT, *.doc
在这种情况下,您不需要逃避诸如此类的事情?
。
REGEX
和REPLACEMENT
是正则表达式——rename
主要sed
用于文件重命名。
使用 进行批量重命名时rename
,最好使用rename
以下-n
选项前执行实际重命名。此选项表示“试运行”,因此只需打印会如果被移除的话,就会完成-n
。
在实验之前请务必阅读man rename
和/或。man sed