如何一次将多个文件夹中的所有 tar.gz 文件提取到另一个目录?

beg*_*ner 6 linux centos extract tar

我当前目录中有很多文件夹。每个文件夹都有一个 tar.gz 文件。要提取 tar.gz 文件,我需要在每个文件夹中并每次运行以下命令。

tar xvzf tar.gz -C /path/to/targetdirectory
Run Code Online (Sandbox Code Playgroud)

在我当前的目录中,它如下所示:

   current directory
            ???Folder1
                ??? A.tar.gz
            ???Folder2
                ??? B.tar.gz
            ???Folder3
                ??? C.tar.gz
            ???Folder4
                ??? D.tar.gz
            ???Folder5
                ??? E.tar.gz
Run Code Online (Sandbox Code Playgroud)

一次提取所有我试过这样

tar xvzf */*.tar.gz -C /path/to/targetdirectory
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误:

tar: Folder1/A.tar.gz: Not found in archive
tar: Folder2/B.tar.gz: Not found in archive
tar: Folder3/C.tar.gz: Not found in archive
tar: Folder4/D.tar.gz: Not found in archive
tar: Folder5/E.tar.gz: Not found in archive
Run Code Online (Sandbox Code Playgroud)

slh*_*hck 9

find在该文件的目录中对每个找到的文件使用并执行命令:

find . -name '*.tar.gz' -execdir tar -xzvf '{}' \;
Run Code Online (Sandbox Code Playgroud)

-execdir选项tar从找到的文件所在的文件夹中执行,{}并将被 tarfile 的名称替换。

有关更多信息,请参阅find文档