2016-11-12 56 views
-1

我有1,500个7zip压缩文件,每个压缩文件包含2到10个文件,没有子目录。从每个7zip压缩文件中提取一个文件(任意),批量文件(Unix)

每个文件都具有相同的扩展名,但文件名会有所不同。

我只想从每个存档中取出一个文件,但我想批量执行此操作。我不关心哪个文件被取出,只要只有一个文件被取出。它可以是第一个文件,最新的,最大的,最小的,没关系。

下面是一个例子:

aa.7z {blah 56.smc, blah 57.smc, 1 blah 58.smc} 
ab.7z {xx.smc, xx 1.smc, xx_2.smc} 
ac.7z {1.smc} 

我想运行的东西相当于:

7z e *.7z # But somehow only extract one file 

谢谢!

+1

您将不得不列出存档,解析输出以选择一个文件。 –

+0

谢谢 - 我尝试过使用7z l(l是用于列表),但它不是以易于使用的格式出现,更不用说管道支持了。除非有某种7z l解析器... – MattWithoos

回答

0

最后我的解决办法是提取所有文件,并在目录中运行以下:

for n in *; do echo "$n"; done > files.txt 

我然后导入该列表到Excel,并通过特殊字符分割文件的标题的文件分割与文件名中的限定数据(例如:某个标题(V1)[X2] .smc),具体而言,我使用了一个括号分隔符。

然后我删除了所有重复项,只留下了每个zip文件的一个版本。我终于把这些列重新编号(不幸的是,在分割过程中删除了括号,所以编写了一个函数,将它添加到是否存在下一列中的内容的条件中),然后重新存储files.txt,稍后回顾StackOverflow寻找答案,根据输入文件(files.txt)删除文件。一个关于此的警告词,文件名中的空格导致了rm和xargs的问题,所以我不得不用引号封装该变量。

最终,这仍然不够好,所以我完全使用了不同的资源。

发布这个答复让别人发现自己陷入了类似的困境,找到了另一种解决办法。

相关问题