如何在 Linux 中使用重音符号批量重命名 Windows 中的文件?

如何在 Linux 中使用重音符号批量重命名 Windows 中的文件?

我有许多来自 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

在这种情况下,您不需要逃避诸如此类的事情?

REGEXREPLACEMENT是正则表达式——rename主要sed用于文件重命名。

使用 进行批量重命名时rename,最好使用rename以下-n选项执行实际重命名。此选项表示“试运行”,因此只需打印如果被移除的话,就会完成-n

在实验之前请务必阅读man rename和/或。man sed

相关内容