2011-10-22 86 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