博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux技巧总结之--tar文件的批量加压
阅读量:5260 次
发布时间:2019-06-14

本文共 1227 字,大约阅读时间需要 4 分钟。

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

第一种:

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

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

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

个人认为这个是最方便的。

第三种:

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

这条命令可解压当前目录下的所有bz2文件,maxdepth表示搜索深度,1代表只搜索当前目录

第四种:

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

  排除指定目录:

tar zcvf linuxany.tgz --exclude='*/log/*' linuxany/

  排除指定文件:

tar zcvf linuxany.tgz --exclude='*/*.log*' linuxany/
问题:
我想进行批量解压tar文件,使用tar -xvf *.tar会出错,提示“Not found in archive”。解决方法有很多,比如写一个脚本之类的。请问为什么tar不支持这种通配符语法呢?是否有特殊的原因?我试过gzip就支gzip -d *.tar.gz。
回答:
通配符是shell解决的问题
tar -xvf *.tar
实际上执行tar时,tar接收到的是
tar -xvf a.tar b.tar c.tar ...
如果当前目录跟本没有tar的东西,那么tar就收到'*.tar'这个参数
与win不同,linux所有字符都可以作文件名,也即目录中不存在着 *.tar这个文件
为了防止 *.tar被shell解释为a.tar b.tar c.tar...
可以给它加个单引号
用tar解开一个Archive时,语法是
tar -xvf <tarfile.tar> <archived_file>
<tarfile.tar> 是选项f所要求的,只能是一个文件,比如myfiles.tar。
<archived_file> 是myfiles.tar所包含的归了档的文件中的一个或者多个成员文件。如果是多个,可以用通配符。
先别跟我急,我知道,这些你是清楚的。但是,你的问题是,用了
tar -xvf *.tar
如楼上所说,tar接收到的是
tar -xvf a.tar b.tar c.tar ...
tar把你的意图理解为,在a.tar里解出b.tar c.tar ...

转载于:https://www.cnblogs.com/mo-beifeng/archive/2011/09/28/2194017.html

你可能感兴趣的文章
mysqladmin 修改和 初始化密码
查看>>
字符串
查看>>
NYOJ 55 懒省事的小明
查看>>
NYOJ 20 吝啬的国度
查看>>
hdu 5138(水题)
查看>>
C++ Primer 5 CH5 语句
查看>>
第一节,windows和ubuntu下深度学习theano环境搭建
查看>>
R语言学习笔记之五
查看>>
后缀数组题目
查看>>
java的同步实现
查看>>
H3C 单区域OSPF配置示例一
查看>>
vue2.x directive - 限制input只能输入正整数
查看>>
iOS常用开源库2
查看>>
实现MyLinkedList类深入理解LinkedList
查看>>
核密度图(直方图的拟合曲线)
查看>>
自定义返回模型
查看>>
使用Git、Git GUI和TortoiseGit
查看>>
Servlet 远程服务IO流传输数据
查看>>
Python学习(七)面向对象 ——继承和多态
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
查看>>