首页 > 系统相关 >Linux-tar、tar.gz、tgz文件批量解压方法

Linux-tar、tar.gz、tgz文件批量解压方法

时间:2024-03-22 11:23:17浏览次数:20  
标签:解压 文件 tar tgz gz 命令 xvf

由于linux的tar命令不支持批量解压,所以很多网友编写了好多支持批量解压的shell命令,收集了一下,供大家分享:

第一:使用for遍历压缩文件,使用tar命令逐个解压

for tar in *.tar.gz; do tar xvf $tar; done

for tar in *.tar.bz2; do tar xvf $tar; done

或者

for i in $(ls *.tar.gz);do tar xvzf $i;done

 

第二:用tar命令批量解压某个文件夹下所有的tar.gz文件

ls *.tar.gz | xargs -n1 tar xzvf

 

第三:使用find命令查找文件并解压

find /path -maxdepth 1 -name "*.tgz"|xargs -i tar xvzf {}

 

同样将参数修改就可以解压目录下所有的bz2文件:

find /path -maxdepth 1 -name "*.bz2"|xargs -i tar xvjf {}

 

说明:maxdepth表示搜索深度,1代表只搜索当前目录

 

问题原因

我想进行批量解压tar文件,使用tar -xvf *.tar会出错,提示“Not found in archive”。解决方法有很多,比如写一个脚本之类的。 请问为什么tar不支持这种通配符语法呢?是否有特殊的原因? 我试过gzip就支gzip -d *.tar.gz。

回答:通配符是shell解决的问题

用tar解开一个Archive时,语法是

tar -xvf <tarfile.tar> <archived_file>

<tarfile.tar> 是选项f所要求的,只能是一个文件,比如myfiles.tar。

<archived_file> 是myfiles.tar所包含的归了档的文件中的一个或者多个成员文件。如果是多个,可以用通配符。

比如:tar -xvf *.tar.gz

实际上执行tar时,tar接收到的是

tar -xvzf a.tar.gz  b.tar.gz  c.tar.gz ...

该命令实际是从a.tar.gz包中解压出里面的包含的b.tar.gz和c.tar.gz包,而不是分别解压a.tar.gz、b.tar.gz、c.tar.gz。

 

标签:解压,文件,tar,tgz,gz,命令,xvf
From: https://www.cnblogs.com/yeyuzhuanjia/p/18089044

相关文章