1. 程式人生 > >linux下用tar命令將當前目錄下檔案按子目錄壓縮歸檔

linux下用tar命令將當前目錄下檔案按子目錄壓縮歸檔

作者:iamlaosong

日常工作中,我們常常需要用tar命令將歷史檔案壓縮歸檔,再刪除原始檔,以便節省空間。如果壓縮歸檔成一個檔案,就比較簡單,用一條命令即可,如命令:tar -czf bak2013.tgz t2013/*就將t2013目錄下所有的檔案打包成一個壓縮檔案。但這樣的檔案往往太大,使用起來也不方便,這時如果能將t2013目錄下的檔案按子目錄打包,一個子目錄一個檔案,這樣就方便使用了。

實現這樣的功能當然不可能是一條命令,用下面這個指令碼就可以了:

# get directory name
subdir=`ls -l |grep ^d |awk '{printf $9" "}'`

for dt in $subdir
do
echo $dt
tar -czf $dt.tgz $dt/*
#rm -r $dt
done

如果是部分目錄中部分檔案打包,只需要做相應的修改即可,如下所示:

# get directory name
subdir=`ls -ld 201212* |grep ^d |awk '{printf $9" "}'`

for dt in $subdir
do
echo $dt
tar -czf $dt.tgz $dt/03005*.dat
done


 附:

tar 命令詳解

  -c: 建立壓縮檔案

  -x:解壓

  -t:檢視內容

  -r:向壓縮歸檔檔案末尾追加檔案

  -u:更新原壓縮包中的檔案

  這五個是獨立的命令,壓縮解壓都要用到其中一個,可以和別的命令連用但只能用其中一個。下面的引數是根據需要在壓縮或解壓檔案時可選的。

  -c: 建立壓縮檔案

  -x:解壓

  -t:檢視內容

  -r:向壓縮歸檔檔案末尾追加檔案

  -u:更新原壓縮包中的檔案

  下面的引數-f是必須的

  -f: 使用檔案名字,切記,這個引數是最後一個引數,後面只能接檔案名。

  # tar -cf all.tar *.jpg

  這條命令是將所有.jpg的檔案打成一個名為all.tar的包。-c是表示產生新的包,-f指定包的檔名。

  # tar -rf all.tar *.gif

  這條命令是將所有.gif的檔案增加到all.tar的包裡面去。-r是表示增加檔案的意思。

  # tar -uf all.tar logo.gif

  這條命令是更新原來tar包all.tar中logo.gif檔案,-u是表示更新檔案的意思。

  # tar -tf all.tar

  這條命令是列出all.tar包中所有檔案,-t是列出檔案的意思

  # tar -xf all.tar

  這條命令是解出all.tar包中所有檔案,-t是解開的意思

  壓縮

  tar –cvf jpg.tar *.jpg //將目錄裡所有jpg檔案打包成tar.jpg

  tar –czf jpg.tar.gz *.jpg //將目錄裡所有jpg檔案打包成jpg.tar後,並且將其用gzip壓縮,生成一個gzip壓縮過的包,命名為jpg.tar.gz

  tar –cjf jpg.tar.bz2 *.jpg //將目錄裡所有jpg檔案打包成jpg.tar後,並且將其用bzip2壓縮,生成一個bzip2壓縮過的包,命名為jpg.tar.bz2

  tar –cZf jpg.tar.Z *.jpg //將目錄裡所有jpg檔案打包成jpg.tar後,並且將其用compress壓縮,生成一個umcompress壓縮過的包,命名為jpg.tar.Z

  rar a jpg.rar *.jpg //rar格式的壓縮,需要先下載rar for linux

  zip jpg.zip *.jpg //zip格式的壓縮,需要先下載zip for linux

  解壓

  tar –xvf file.tar //解壓 tar包

  tar -xzvf file.tar.gz //解壓tar.gz

  tar -xjvf file.tar.bz2 //解壓 tar.bz2

  tar –xZvf file.tar.Z //解壓tar.Z

  unrar e file.rar //解壓rar

  unzip file.zip //解壓zip

  總結

  1、*.tar 用 tar –xvf 解壓

  2、*.gz 用 gzip -d或者gunzip 解壓

  3、*.tar.gz和*.tgz 用 tar –xzf 解壓

  4、*.bz2 用 bzip2 -d或者用bunzip2 解壓

  5、*.tar.bz2用tar –xjf 解壓

  6、*.Z 用 uncompress 解壓

  7、*.tar.Z 用tar –xZf 解壓

  8、*.rar 用 unrar e解壓

  9、*.zip 用 unzip 解壓