我被发送了一个包含40个同名文件的zip文件。我想将这些文件中的每一个提取到一个单独的文件夹中,或者提取每个名称不同的文件(file1,file2等)。
有没有一种方法可以用标准的linux工具自动完成这个任务呢?检查man unzip没有发现任何可以帮助我的东西。zipsplit似乎也不允许任意分割zip文件(我试图将zip分割成40个归档,每个包含一个文件)。
目前我正在(r)单独命名我的文件。这对40个文件的归档来说不是什么大问题,但显然是不可伸缩的。
有人有一个很好的,简单的方法来做这个吗?比什么都好奇。
谢谢。
5条答案
按热度按时间b91juud31#
假设目前还没有这样的工具,那么用python编写一个工具应该很容易,Python有一个zipfile module应该足够了。
类似这样的东西(可能,未经测试):
4jb9z9bj2#
我知道这是一个几年前,但上面的答案并没有解决我在这里的特殊问题,所以我想我应该继续张贴一个解决方案,为我工作。
如果不使用脚本,你可以只使用命令行输入来与解压缩工具的文本界面交互,也就是说,当你在命令行中输入以下内容时:
并且它包含同名文件,它将提示您:
如果您想手工完成此操作,您可以键入“r”,然后在下一个提示符处:
你只需输入新的文件名。
要自动执行此操作,只需创建一个包含对这些提示的响应的文本文件,并将其用作解压缩的输入,如下所示。
使用你最喜欢的脚本语言很容易就可以生成这个文件,将它保存为unzip_input. txt,然后将它作为解压缩的输入,如下所示:
对我来说,这比试图让Perl或Python提取模块按照我需要的方式工作更令人头痛。希望这对一些人有帮助...
qzlgjiam3#
以下是Linux脚本版本
在这种情况下,834733991_T_ONTIME.csv是每个zip文件中相同的文件名,“$count”后面的.csv必须简单地与您想要的文件类型交换
polhcujo4#
这个线程是旧的,但仍有改进的空间。我个人更喜欢bash中的以下一行程序
删除扩展并使用
az31mfrm5#
使用
unzip -B file.zip
对我来说很有用,它创建了一个后缀为~<number>
的备份文件,以防文件已经存在。例如:
Note: the
-B
option does not show up inunzip --help
, but is mentioned in the man pages: https://manpages.org/unzip#options