5.tar命令批量壓縮文件

**方法一**  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
date=`date +%y%m%d%H%M%S`   #建立一個目錄文件用date命令防止重複
mkdir -p /tmp/tar_$date
for j in `cat /tmp/tar.txt`
do
        cp $j.bak /tmp/tar_$date   
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選項,解壓時也須要加上 -zxvPfbash

**方法二** 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

總結:方法二跟方法一差別在於方法二省略了建立目錄的過程,可是須要建立兩個文本進行替換ide

相關文章
相關標籤/搜索