从每个7zip归档文件中批量提取一个文件(任意)(Unix)

从每个7zip归档文件中批量提取一个文件(任意)(Unix),unix,archive,7zip,bulk,Unix,Archive,7zip,Bulk,我有1500个7zip存档,每个存档包含2到10个文件,没有子目录 每个文件都有相同的扩展名,但文件名不同 我只希望每个归档文件中有一个文件,但我希望批量执行此操作。我不在乎哪个文件被取出,只要只取出一个文件。它可以是第一个文件,最新的,最大的,最小的,没关系 下面是一个例子: 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} 我想运行与以下内容等效的

我有1500个7zip存档,每个存档包含2到10个文件,没有子目录

每个文件都有相同的扩展名,但文件名不同

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

下面是一个例子:

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

谢谢大家!

最终,我的解决方案是提取所有文件并在目录中运行以下程序:

for n in *; do echo "$n"; done > files.txt
然后,我将该列表导入excel,并使用一个特殊字符分割文件,该字符将文件标题与文件名中的限定数据分开(例如:某些标题(V1)[X2].smc),具体来说,我使用了括号分隔符

然后我删除了所有的副本,只剩下一个版本。最后,我重新合并了这些列(不幸的是,在拆分过程中括号被删除了,因此我编写了一个函数,在下一列中是否有内容的条件下将其添加回去),然后重新保存files.txt,在查看StackOverflow的答案后,根据输入文件(files.txt)删除了文件。警告一下,文件名中的空格会导致rm和xargs出现问题,因此我必须用引号封装变量

最终,这仍然不能很好地为我服务,所以我只是使用了完全不同的资源


发布此答案,以便其他处于类似困境的人找到替代解决方案。

您必须列出归档文件,解析输出以选择一个文件。谢谢-我尝试使用7z l(l代表列表),但它的格式不易使用,更不用说可管道化了。除非有某种7ZL解析器。。。