2014-03-07 40 views

回答

0

一些建議:

  • 執行壓縮到只列出一個文件,輸出重定向到一些文件
  • 截斷該文件得到的只有前1000行
  • 傳遞文件壓縮到只提取規定文件
1

您可以使用通配符來選擇文件的子集。例如。

  • 提取出所有包含以B開頭的文件:

    解壓some.zip B *

  • 提取包含的所有文件的名字,其中y結尾:

    解壓some.zip * Y .extension

您可以選擇一個通配符模式,它是cl足夠了,或仔細檢查unzip -l some.zip的輸出以確定一個模式或一組模式,這些模式或模式集將會爲您提供恰到好處的數字。

1

我這樣做:

unzip -l zipped_files.zip |head -1000 |cut -b 29-100 >list_of_1000_files_to_unzip.txt 
我用切割只得到文件名,第3列是大小等

現在遍歷文件名:

for files in `cat list_of_1000_files_to_unzip.txt `; do unzip zipped_files.zip $files;done 
+1

我會推薦第二個命令:cat list_of_1000_files_to_unzip.txt | xargs unzip zipped_files.zip這個答案有一些問題(例如帶空格的文件名),但它在所有方面至少應該和for循環相同。 – Slartibartfast

+0

謝謝!這使命令更短! 如果仔細觀察,任何文件名都沒有空格。 1)list_of_1000_files_to_unzip.txt 2)zipped_files.zip是這裏使用的唯一文件名。 你還看到了什麼其他問題? – rocx

+0

我指的是壓縮文件名稱中的空格。 xargs(和for)將分隔空間,將「C:\ Documents and Settings \ Ferret food recipies.doc」分隔爲:C:\ Documents和Settings \ Ferret,food和recipies.doc(5個單獨的文件) – Slartibartfast

1
unzip -Z1 test.zip | head -1000 | sed 's| |\\ |g' | xargs unzip test.zip 
  • -Z1提供文件的原始列表
  • sed表達式編碼空格(作品無處不在,包括MacOS)