2011-10-22 56 views
2

我有一堆zip文件,我試圖做一個bash腳本來自動解壓縮某些文件。 事情是,雖然我知道我想要的文件的名稱,但我不知道它所在的文件夾的名稱;它是一個文件夾深度在從未知名稱的文件夾解壓縮?

如何提取這些文件,最好丟棄該文件夾?

回答

0

你試過unzip somefile.zip "*/blah.txt"

0

下面介紹如何在任何深度解壓縮任何給定的文件和垃圾的出路的文件夾路徑:

unzip -j somezip.zip *somefile.txt 

的-j側畔的任何文件夾結構中的zip文件和星號給出了一個通配符匹配沿任何路徑。

0

您可以使用find找到你需要解壓的文件,xargs調用解壓:

find /path/to/root/ -name 'zipname.zip' -print0 | xargs -0 unzip 

print0使命令與在他們的白色空間中的文件或路徑工作。 -0xargs的選項,它可以與print0一起使用。

1

,如果你在:

some_directory/

和zip文件在任何數量的子目錄,說:

some_directory /富

find ./ -name myfile.zip -exec unzip {} -d /directory \; 

編輯:對於第二部分,刪除包含我假設的zip文件的目錄?

find ./ -name myfile.zip -exec unzip {} -d /directory \; -exec echo rm -rf `dirname {}` \; 

注意「回聲」。這是一個健康檢查。在像這樣的循環/迭代序列中執行諸如rm -rf之類的破壞性操作時,我總是首先回顯。祝你好運!

+0

良好的通話。我誤解他是在單個zip文件中詢問某個子文件夾,但你說得對,他要求在一組未知的文件系統子文件夾中使用某個zip文件。 – davidethell

相關問題