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

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

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

tar xvzf tar.gz -C /path/to/targetdirectory

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

   current directory
            ├──Folder1
                ├── A.tar.gz
            ├──Folder2
                ├── B.tar.gz
            ├──Folder3
                ├── C.tar.gz
            ├──Folder4
                ├── D.tar.gz
            ├──Folder5
                ├── E.tar.gz

为了一次性提取所有内容,我尝试过

tar xvzf */*.tar.gz -C /path/to/targetdirectory

这给了我一个错误:

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

答案1

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

find . -name '*.tar.gz' -execdir tar -xzvf '{}' \;

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

查看find文档了解更多信息。

相关内容