Bz* 命令

bzip2是用来压缩和解压文件的一个命令, 它最大的优点在于超高的压缩效率.

bzip2VSgzip

  • bzip2压缩率更高
  • gzip速度更快
  • 在高压缩率下bzip2的速度更块一些(相比gzip)

压缩某个文件

➤ ls -l catshadow
-rwxrwxr-x 1 mr mr 8.7K 11月 11 15:49 catshadow*
➤ bzip2 catshadow
➤ ls -l catshadow.bz2 
-rwxrwxr-x 1 mr mr 2.8K 11月 11 15:49 catshadow.bz2*

然后你就会发现原来的文件不见惹...

在压缩文件(.bz2)里面搜索 (bzgrep)

如果你压缩了某个日志文件, 想搜索里面的某条信息, 那你是不是应该先解压, 再用grep搜索?

然而,这条命令就把两者组合起来了:

bzgrep grep-options -e pattern filename

我觉着这是不符合Unix哲学的, 把自己的事情做好就行了, 可是话又说回来, 你怎么知道我想做什么事呢?

➤ seq 99999 > numbers
➤ l numbers 
-rw-rw-r-- 1 mr mr 576K  1月  5 20:28 numbers
➤ bzip2 numbers 
➤ bzgrep 233 numbers.bz2 
233
1233
2233
2330
2331
...
...

直接在文件里面搜索.

查看压缩文件的内容(不解压)

同样, 我们不解压也可以直接查看压缩文件的内容:

bzcat numbers.bz2

或者:

bzless numbers.bz2

或者:

bzmore numbers.bz2

bz找不同

还有bzcmpbzdiff 这两个命令, 是用来找不同的.

$ cmp System.txt.001 System.txt.002
System.txt.001 System.txt.002 differ: byte 20, line 2
$ bzcmp System.txt.001.bz2 System.txt.002.bz2
- /tmp/bzdiff.csgqG32029 differ: byte 20, line 2
$ bzdiff System.txt.001.bz2 System.txt.002.bz2
2c2
< 0: ERR: Mon Sep 27 12:19:34 2010: gs(11153/1105824064):
[chk_sqlcode.scp:92]: Database: ORA-01654: unable to
extend index OPC_OP.OPCX
_ANNO_NUM by 64 in tablespace OPC_INDEX1
---
> 0: ERR: Wed Sep 22 09:59:42 2010:
gs(11153/47752677794640): [chk_sqlcode.scp:92]: Database:
ORA-01653: unable to extend table OPC_OP.
OPC_HIST_MESSAGES by 64 in tablespace OPC_6
4,5c4
< Retry. (OpC51-22)
< Database: ORA-01654: unable to extend index
OPC_OP.OPCX_ANNO_NUM by 64 in tablespace OPC_INDEX1
---
> 0: ERR: Wed Sep 22 09:59:47 2010:
gs(11153/47752677794640): [chk_sqlcode.scp:92]: Database:
ORA-01653: unable to extend table OPC_OP.
OPC_HIST_MESSAGES by 64 in tablespace OPC_6

这一部分我介绍的有点少, 是因为我本人用bz系列不是很多, 为了追求速度, 都是用tar的, 而且日常生活中也遇不到对比两个压缩文件内容的情况...

results matching ""

    No results matching ""