将.gz文件从子文件夹(递归地)解压缩到根文件夹中

时间:2015-11-11 15:33:38

标签: linux gzip

情况如下:我有一个文件夹,包含很多子文件夹,其中一些包含.gz压缩文件(非tar,只是压缩文本文件)。我想以递归方式将所有这些.gz文件解压缩到根文件夹中,但我无法弄清楚它的确切方法。

我的文件夹是这样的: /folderX/subfolder1/file.gz

使用

gzip -c -d -r *.gz

我可以一次提取所有文件,但它们将保留在各自的子文件夹中。我希望他们都在/ folderX /

find -name *.gz

给了我正在寻找的文件的正确列表,但我不知道如何组合这两个命令。我应该在脚本中组合这些命令吗?或者是否有我错过的gzip功能允许解压缩执行命令的文件夹中的所有内容?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用迭代输入的while..done循环:

#include "LoadMedia.h"
#include "LuaBridge.h"
#include <string>

LoadMedia::LoadMedia(){}
LoadMedia::~LoadMedia(){}

void LoadMedia::loadScript(luabridge::lua_State* L, const std::string& scriptFilename) 
{
  using namespace luabridge;
  if (luaL_dofile(L, scriptFilename.c_str()) != 0) 
    {
    std::cout << "Error, cannot open the script!" << std::endl;
    }
}

您还可以使用xargs,还可以在参数-0的文件名中处理空格(“”):

find dirname -name *.gz|while read i; do gzip -c -d -r $i; done

“-print0”输出以NULL字符分隔的所有文件。 xargs的-0开关重建解析NULL字符的列表,并对每个字符应用“gzip ...”命令。注意“-L 1”参数,它告诉xargs一次只传递一个文件到gzip。