Linux:解压缩包含相同名称的文件的存档

我发送了一个包含40个同名文件的zip文件。 我想提取每个文件到一个单独的文件夹或提取每个文件的不同名称(文件1,文件2等)。

有没有办法使用标准的Linux工具自动执行此操作? 检查一下男人解压没有透露任何可以帮助我。 zipsplit也似乎不允许任意拆分zip文件(我试图将zip分成40个档案,每个档案包含一个文件)。

目前我正在(r)单独使用我的文件。 这不是一个40文件存档的问题,但显然是不可扩展的。

任何人都有一个很好,简单的方法呢? 比其他事情更好奇。

谢谢。

假设目前没有这样的工具,那么用python编写一个工具应该很容易。 Python有一个应该足够的zipfile模块 。

像这样的东西(也许,未经测试):

 #!/usr/bin/env python import os import sys import zipfile count = 0 z = zipfile.ZipFile(sys.argv[1],"r") for info in z.infolist(): directory = str(count) os.makedirs(directory) z.extract(info,directory) count += 1 z.close() 

我知道这是一个几岁,但上面的答案并没有解决我在这里的特殊问题,所以我想我应该继续前进,并发布一个解决方案,为我工作。

如果没有脚本,您可以使用命令行输入与解压缩工具文本界面进行交互。 也就是说,当你在命令行输入这个命令时:

 unzip file.zip 

它包含了同名的文件,它会提示你:

 replace sameName.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: 

如果您想手动执行此操作,请键入“r”,然后在下一个提示符处:

 new name: 

你只需输入新的文件名。

要自动执行此操作,只需创建一个带有对这些提示的响应的文本文件,并将其用作解压缩的输入,如下所示。

 r sameName_1.txt r sameName_2.txt ... 

这很容易使用你最喜欢的脚本语言生成。 将它保存为unzip_input.txt,然后用它作为输入来解压缩,如下所示:

 unzip < unzip_input.txt 

对我而言,这并不像试图让Perl或Python提取模块按我需要的方式工作那样令人头疼。 希望这可以帮助别人…

这里是一个Linux脚本版本

在这种情况下,834733991_T_ONTIME.csv是每个zip文件中相同文件的名称,“$ count”之后的.csv只需与您想要的文件类型进行交换

 #!/bin/bash count=0 for a in *.zip do unzip -q "$a" mv 834733991_T_ONTIME.csv "$count".csv count=$(($count+1)) done`