Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4842782
  • 博文数量: 930
  • 博客积分: 12070
  • 博客等级: 上将
  • 技术积分: 11448
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-15 16:57
文章分类

全部博文(930)

文章存档

2011年(60)

2010年(220)

2009年(371)

2008年(279)

分类:

2008-09-04 21:05:22

tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面来举例说明一下:
# 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包中所有文件,-x是解包的意思
  以上就是tar的最基本的用法。为了方便用户在打包解包的同时可以压缩或解压文件,tar提供了一种特殊的功能。这就是tar可以在打包或解包的同时调用其它的压缩程序,比如调用gzip、bzip2等。
  1) tar调用gzip
  gzip是GNU组织开发的一个压缩程序,.gz结尾的文件就是gzip压缩的结果。与gzip相对的解压程序是gunzip。tar中使用-z这个参数来调用gzip。下面来举例说明一下:
  # tar -czf all.tar.gz *.jpg
  这条命令是将所有.jpg的文件打成一个tar包,并且将其用gzip压缩,生成一个gzip压缩过的包,包名为all.tar.gz
  # tar -xzf all.tar.gz
  这条命令是将上面产生的包解开。
  2) tar调用bzip2
  bzip2是一个压缩能力更强的压缩程序,.bz2结尾的文件就是bzip2压缩的结果。与bzip2相对的解压程序是bunzip2。tar中使用-j这个参数来调用bzip2。下面来举例说明一下:
  # tar -cjf all.tar.bz2 *.jpg
  这条命令是将所有.jpg的文件打成一个tar包,并且调用bzip2压缩,生成一个bzip2压缩过的包,包名为all.tar.bz2
  # tar -xjf all.tar.bz2
  这条命令是将上面产生的包解开。
    3)tar调用compress

compress也是一个压缩程序,但是好象使用compress的人不如gzip和bzip2的人多。.Z结尾的文件就是bzip2压缩的结果。与compress相对的解压程序是uncompress。tar中使用-Z这个参数来调用gzip。下面来举例说明一下:

  # tar -czf all.tar.Z *.jpg
  这条命令是将所有.jpg的文件打成一个tar包,并且调用compress压缩,生成一个uncompress压缩过的包,包名为all.tar.Z
  # tar -xzf all.tar.Z
  这条命令是将上面产生的包解开
  常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们:
  1)对于.zip
  # zip all.zip *.jpg
  这条命令是将所有.jpg的文件压缩成一个zip包

    注意:如果要压缩的是个文件夹,则要加上-r参数,表示调用递归压缩,如:

      zip -r temp.zip temp

        # unzip all.zip
  这条命令是将all.zip中的所有文件解压出来

  2)对于.rar
  要在linux下处理.rar文件,需要安装RAR for Linux,可以从网上下载,
  # rar a all *.jpg
  这条命令是将所有.jpg的文件压缩成一个rar包,名为all.rar,该程序会将.rar 扩展名将自动附加到包名后。
  # unrar e all.rar
  这条命令是将all.rar中的所有文件解压出来

正个data文件夹数据有6G大,我想data文件下每50个文件打包压缩,怎么用SHELL解决

我的data文件夹目录中以每天日期为文件夹名存放着数据,
data
|
 ----20050821
 ----20050822
 ----20050822
正个data文件夹数据有6G大,我想data文件下每50个文件打包压缩,怎么用SHELL解决,

二,
试想data文件中有几百个文件,
data
|
--log 文件
--feaf
--464
--646
如果我想删除feaf,646以外的文件,怎么解决

第二个问题easy

ls|grep -vE '^feaf$|^646$'|rm

对于第一个问题可用如下代码: (我习惯安数值方式排列,所以用了sort -g)



#!/bin/bash

#mulbak.sh


flag=0
num=0
seq=0

ls | sort -g | while read filename
do
if [ $flag -eq 1 ]
then
    tar cvf bak$seq.tar $filename
else
    tar rf bak$seq.tar $filename
    (( num+=1 ))
        if [ $num -eq 50 ]
        then
        flag=0
        num=0
        (( seq+=1 ))
        fi
fi
done

阅读(1220) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~