我当前的目录中有许多文件夹。每个文件夹都有一个 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
文档了解更多信息。