ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

5.tar命令批量压缩文件

2020-10-18 11:50:26  阅读:207  来源: 互联网

标签:tmp do tar 批量 压缩文件 cat txt bak


**方法一**  find命令先查找符合的文件,for循环结合mv 和cp命令进行对文件处理
#!/bin/bash
d=/root/test/  #指定你需要压缩的文件目录
find $d -type f -name "*.txt" >/tmp/tar.txt   #指定一个文本用于循环
#找到符合的文件写入到 tar.txt文本里面
for i in `cat /tmp/tar.txt`  #遍历文本
do
        mv $i $i.bak
done
d=`date +%y%m%d%H%M%S`   #创建一个目录文件用date命令防止重复
mkdir -p /tmp/tar_$d
for j in `cat /tmp/tar.txt`
do
        cp $j.bak /tmp/tar_$d   
done
cd /tmp/        #进入到想要保存的目录进行保存,这里是/tmp目录保存
tar -czf 123.tar.gz  tar_$d/  #**注1 **  tar -tvf 查看压缩文件 ,tar-xzvf 解压  -C指定解压目录,
#tar命令不允许绝对路径,所以要进入到目录下进行压缩
for k in `cat /tmp/tar.txt`
do
        mv $k.bak $k   #for循环还原压缩文本
done

注1:如果加了 /tmp/tar_$d/ 用tar -tf命令显示的压缩包错误信息为: tmp/tar_201017235924/
如果一定要绝对路径 需加上 -P选项,解压时也需要加上 -zxvPf

**方法二** find命令先查找符合的文件,xargs对查找的文件进行处理
#!/bin/bash
d=/root/test/  #指定你需要压缩的文件目录
find $d -type f -name "*.txt">/tmp/tar.txt #指定一个文本用于循环
for i in `cat /tmp/tar.txt`
do
        mv $i $i.bak
done
for j in `cat /tmp/tar.txt `
do
        echo $j.bak
done > /tmp/tar.bak  #创建两个内容文件,一个用于.txt复原,一个用于.bak压缩
cd $d
tar -czf /tmp/123.tar.gz `cat /tmp/tar.bak|awk -F "/" '{print $4}'| xargs`
#tar命令必须用相对路径 不然会报错 如果一定要用绝对路径则需要加上-zcPf
for k in `cat /tmp/tar.txt`
do
        mv $k.bak $k #for循环还原压缩文本
done

总结:方法二跟方法一差异在于方法二省略了创建目录的过程,但是需要创建两个文本进行替换

标签:tmp,do,tar,批量,压缩文件,cat,txt,bak
来源: https://blog.51cto.com/11594671/2542253

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有