如何在 Mac 上批量重命名 RAR 或 ZIP 存档中的文件?

如何在 Mac 上批量重命名 RAR 或 ZIP 存档中的文件?

我有一组存档文件(zip 和 rar 格式),我需要重命名其中的一些文件。具体来说,我想做这样的事情:

for each archive file in a directory
    for each file in the archive
        if the file name matches the regular expression /(.* - [0-9]{2})([0-9]{2} - .)*/
            rename the file as \1-\2

诀窍并不在于生成新名称;我可以用 或bash或其他任何方式来做到这一点。它是使用/或/sed来操作档案中的文件的一组命令rarunrarunzipzip

(如果这有区别的话,我会重新格式化一些 CBR/CBZ 文件,以使双页跨页在 SimpleComic 中按正确顺序出现——它将第 0203 页解释为第 203 页,这让故事有点难以理解)

答案1

我认为最简单的方法是解压每个档案,执行重命名操作,然后重新打包。

在 Linux 上,我可以使用 FUSE 文件系统来透明地解压档案,然后像操作普通文件夹一样操作这些档案,使用批处理脚本进行所有重命名。我不知道 Mac 上是否存在这种特定的 FUSE 文件系统。

答案2

我看了你的例子,看到了 PYTHON CODE:)

我真的认为这才是解决问题的方法。我知道这不是 stackoverflow……但这是我能解决你的问题的唯一方法。

提取所有文件的示例代码:

import zipfile

a = zipfile.ZipFile("C:\\x.zip", 'r')
for i in a.namelist():         #Extract every file from it
     b = open("C:\\"+i, 'wb')
     b.write(a.read(i))
     #HERE YOU INSERT WHAT YOU WANT TO DO TO EACH FILE (b is the last file)
     b.close()
a.close()

希望这可以帮助

本页教你如何安装 MAC 命令行解压工具

因此,您可以编写一个脚本来解压文件,并编写一个脚本来压缩文件,然后从 python 中调用,并让 python 更改名称。

要执行外部脚本,请使用:

import os;
os.system("path/scritname");

答案3

rar 有一个命令行开关来重命名档案中的文件:

rar rn 存档.rar 文件名 新文件名

但是你使用的 zip 实用程序不支持。你需要像 Ryan 所说的那样提取、重命名并重新压缩。其他 Mac 版 zip 实用程序可能具有此功能。我知道 7-zip 支持在存档中重命名自 2.30 beta 25 起,虽然我还没有检查他们是否支持从命令行使用它。7-zip 在命令行选项方面相当广泛,所以我认为它可以。

答案4

我也一直在研究这个问题,我认为最简单的方法就是编写一个 python 脚本来完成它,特别是因为你要处理 RAR 和 ZIP 文件。

看起来没有一种特别干净的方法来重命名 zip 存档中的文件,除非解压所有文件,重命名要重命名的文件,然后将它们重新压缩,这确实不太理想。不过,我偶然发现了一个名为的 OS/X 实用程序,zipnote它确实可以做到这一点:

zipnote 手册页

它看起来不太容易使用,但可能值得研究,假设它实际上不解压文件本身,它应该很容易实现自动化。与此同时,命令行 OS/X rar 实用程序支持通过 重新命名 RAR 档案内的文件rar rn foobar.rar oldname newname

相关内容