2016-11-12 48 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的問題,所以我不得不用引號封裝該變量。

最終,這仍然不夠好,所以我完全使用了不同的資源。

發佈這個答覆讓別人發現自己陷入了類似的困境,找到了另一種解決辦法。

相關問題