如何在Linux或Unix上的目录中提取多个tar包(* .tar.gz)文件
时间:2020-01-09 14:17:07 来源:igfitidea点击:
我已经尝试过tar -xvf * .tar.gz命令,但是得到的错误显示为:
tar (child): *.gz: Cannot open: No such file or directory tar (child): Error is not recoverable: exiting now tar: Child returned status 2 tar: Error is not recoverable: exiting now
如何使用Linux或Unix-shell提示符提取目录中的多个* .tar.gz文件?
Linux或类Unix系统使用tar命令从tar包存档中列出,测试或提取文件,该文件通常在类Unix系统上找到。
Linux/Unix上多个tar包文件的问题
假设您在当前目录中有四个文件,如下所示:
- conf.tar.gz
- mysql.tar.gz
- www.tar.gz
让我们用ls命令验证它
$ ls
输出示例:
conf.tar.gz mysql.tar.gz www.tar.gz
要解压缩所有* .tar.gz文件,请执行:
$ tar xvf *.gz
或者
$ tar -zxvf *.tar.gz
或者
$ tar xvf "*.gz"
或者
$ tar -zxvf '*.gz'
提取多个.tar.gz文件
方法1:使用bash循环解压缩多个tar包
使用bash for loop如下:
for f in *.tar.gz; do tar xf "$f"; done
或者
for f in *.tar.gz; do tar -xvf "$f"; done
或者
for f in *.tgz; do tar -xzvf "$f"; done
或者
for f in *.tar.bz2; do tar -xvf "$f"; done
或者
for f in *.tar.bz2; do tar -xjvf "$f"; done
或者
for f in *.tar.xz; do tar -xvf "$f"; done
或者
for f in *.tar.xz; do tar -xvJf "$f"; done
验证一下:
ls
方法2:使用bash/sh/ksh管道解压多个tar包
语法为:
cat *.tar.gz | tar zxvf - -i cat *.tgz | tar zxvf - -i cat *.tar.xz | tar Jxvf - -i cat *.tar.bz2 | tar jxvf - -i
输出示例:
etc/mysql/ etc/mysql/ssl/ etc/mysql/ssl/server-req.pem etc/mysql/ssl/ca-key.pem etc/mysql/ssl/client-key.pem etc/mysql/ssl/server-key.pem etc/mysql/ssl/server-cert.pem etc/mysql/ssl/client-cert.pem etc/mysql/ssl/client-req.pem etc/mysql/ssl/ca-cert.pem etc/mysql/conf.d/ etc/mysql/conf.d/mysql.cnf etc/mysql/conf.d/mysqldump.cnf etc/mysql/my.cnf.fallback etc/mysql/my.cnf etc/mysql/mariadb.cnf etc/mysql/mariadb.conf.d/ etc/mysql/mariadb.conf.d/50-client.cnf etc/mysql/mariadb.conf.d/50-mysql-clients.cnf ..... ... ..
-i选项强制tar命令忽略存档(EOF)中的清零块。
如果您使用的是方法2,则需要这样做。