我被送到含有具有相同名称的40个文件的zip文件。 我想每个文件提取到一个单独的文件夹或提取的每个文件使用不同的名称(文件1,文件2,等等)。

有没有办法与标准的Linux工具自动做到这一点?男子解压的检查没有发现什么,可以帮助我。 zipsplit也似乎不允许的zip文件的任意的分裂(我试图拉链分成40个档案,每个包含一个文件)。

在单独enaming我的文件,我的那一刻(R)。这与其说是一个40文件归档的问题,但显然是不可扩展的。

任何人有这样做的很好的,简单的方法?比什么都好奇。

感谢。

有帮助吗?

解决方案

假设没有这样的工具目前存在,那么它应该是很容易编写一个在python。 Python有一个 zip文件模块应该是足够的。

是这样的(也许,未测试的):

#!/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文件中相同的文件名,并经过“$伯爵”只需简单地与你想要的文件类型进行交换该.csv

#!/bin/bash

count=0

for a in *.zip
do
    unzip -q "$a"
    mv 834733991_T_ONTIME.csv "$count".csv
    count=$(($count+1))
done`
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top