linux下用tar命令将当前目录下文件按子目录压缩归档的实现
日常工作中,我们常常需要用tar命令将历史文件压缩归档,再删除源文件,以便节省空间。如果压缩归档成一个文件,就比较简单,用一条命令即可,如命令:tar-czfbak2013.tgzt2013/*就将t2013目录下所有的文件打包成一个压缩文件。但这样的文件往往太大,使用起来也不方便,这时如果能将t2013目录下的文件按子目录打包,一个子目录一个文件,这样就方便使用了。
实现这样的功能当然不可能是一条命令,用下面这个脚本就可以了:
#getdirectoryname subdir=`ls-l|grep^d|awk'{printf$9""}'` fordtin$subdir do echo$dt tar-czf$dt.tgz$dt/* #rm-r$dt done
如果是部分目录中部分文件打包,只需要做相应的修改即可,如下所示:
#getdirectoryname subdir=`ls-ld201212*|grep^d|awk'{printf$9""}'` fordtin$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-cfall.tar*.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
#tar-rfall.tar*.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
#tar-ufall.tarlogo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
#tar-tfall.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
#tar-xfall.tar
这条命令是解出all.tar包中所有文件,-t是解开的意思
压缩
tar–cvfjpg.tar*.jpg//将目录里所有jpg文件打包成tar.jpg
tar–czfjpg.tar.gz*.jpg//将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar–cjfjpg.tar.bz2*.jpg//将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar–cZfjpg.tar.Z*.jpg//将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rarajpg.rar*.jpg//rar格式的压缩,需要先下载rarforlinux
zipjpg.zip*.jpg//zip格式的压缩,需要先下载zipforlinux
解压
tar–xvffile.tar//解压tar包
tar-xzvffile.tar.gz//解压tar.gz
tar-xjvffile.tar.bz2//解压tar.bz2
tar–xZvffile.tar.Z//解压tar.Z
unrarefile.rar//解压rar
unzipfile.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用unrare解压
9、*.zip用unzip解压
以上这篇linux下用tar命令将当前目录下文件按子目录压缩归档的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。