从未知名称的文件夹中解压缩?

时间:2011-10-22 18:03:55

标签: linux bash shell zip unzip

我有一堆zip文件,我正在尝试制作一个bash脚本来自动解压缩某些文件。 事情是,虽然我知道我想要的文件的名称,但我不知道它所在的文件夹的名称;

是一个文件夹深度

如何提取这些文件,最好丢弃文件夹?

4 个答案:

答案 0 :(得分: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这样具有破坏性的东西时,我总是首先回应。祝你好运!

答案 1 :(得分:0)

您是否尝试过unzip somefile.zip "*/blah.txt"

答案 2 :(得分:0)

以下是如何在任何深度解压缩任何给定文件并在出路时垃圾文件夹路径:

unzip -j somezip.zip *somefile.txt

-j junks zip文件中的任何文件夹结构,星号表示一个通配符,可以沿任何路径匹配。

答案 3 :(得分:0)

您可以使用find查找解压缩所需的文件,并xargs调用解压缩:

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

print0使命令能够处理其中包含空格的文件或路径。 -0xargs的选项,可以使其与print0一起使用。