情况如下:我有一个文件夹,包含很多子文件夹,其中一些包含.gz压缩文件(非tar,只是压缩文本文件)。我想以递归方式将所有这些.gz文件解压缩到根文件夹中,但我无法弄清楚它的确切方法。
我的文件夹是这样的: /folderX/subfolder1/file.gz
使用
gzip -c -d -r *.gz
我可以一次提取所有文件,但它们将保留在各自的子文件夹中。我希望他们都在/ folderX /
中find -name *.gz
给了我正在寻找的文件的正确列表,但我不知道如何组合这两个命令。我应该在脚本中组合这些命令吗?或者是否有我错过的gzip功能允许解压缩执行命令的文件夹中的所有内容?
感谢您的帮助!
答案 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。