参考了朋友的两篇博文,分别是Linux 文件解压及压缩命令Grep

#Linux 文件解压及压缩命令

Linux下,通常需要用tar命令进行解压和压缩操作,针对不同的压缩文件格式,tar命令的参数也不相同。

##tar 命令的常用参数含义:


Main operation mode:

 -A, --catenate, --concatenate   append tar files to an archive
 -c, --create               create a new archive
 -d, --diff, --compare      find differences between archive and file system
     --delete               delete from the archive (not on mag tapes!)
 -r, --append               append files to the end of an archive
 -t, --list                 list the contents of an archive
     --test-label           test the archive volume label and exit
 -u, --update               only append files newer than copy in archive
 -x, --extract, --get       extract files from an archive

##常见压缩文件格式解压参数

  • .tar.Z 格式

[解压]$ tar Zxvf FileName.tar.Z
[压缩]$ tar Zcvf FileName.tar.Z
  • .zip 格式

[压缩]$ unzip FileName.zip
[解压]$ zip
  • .gz 格式

[解压]$ gunzip FileName.gz
[  或]$ gzip -d FileName.gz
[压缩]$ gzip FileName
  • .tar.gz 格式

[解压]$ tar zxvf FileName.tar.gz
[压缩]$ tar zcvf FileName.tar.gz DirNamee
  • .bz2 格式

[解压]$ bzip2 -d FileName.bz2
[  或]$ bunzip2 FileName.bz2
[压缩]$ bzip2 -z FileName
  • .tar.bz2 格式

[解压]$ tar jxvf FileName.tar.bz2
[压缩]$ tar jcvf FileName.tar.bz2 DirName
  • .bz 格式

[解压]$ bzip2 -d FileName.bz
[  或]$ bunzip2 FileName.bz
  • .tar.bz 格式

[解压]$ tar jxvf FileName.tar.bz
  • .Z 格式

[解压]$ uncompress FileName.Z
[压缩]$ compress FileName
  • .tgz 格式

[解压]$ tar zxvf FileName.tgz
  • .tar.tgz 格式

[解压]$ tar zxvf FileName.tar.tgz
[压缩]$ tar zcvf FileName.tar.tgz FileName
  • .zip 格式

[解压]$ unzip FileName.zip
[压缩]$ zip FileName.zip DirName
  • .rar 格式

[解压]$ rar e FileDir
[压缩]$ rar a FileName.rar
  • .tar.lz 格式

[解压]$ tar xvf filename.tar.lz
  • .tar.xz 格式

[解压]$ xz -d filename.tar.xz
[压缩]$ xz -Z FileDir
  • .lzma格式

[解压]$ lzma -d filename.lzma
[压缩]$ lzma -k FileDir
  • .tar 格式

[解包]$ tar xvf FileName.tar
[打包]$ tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)
  • .lha格式

[解压]$ lha -e FileName.lha
[压缩]$ lha -a FileName.lha FileName

#Grep命令

指定要搜索的单词

grep -w "word"

搜索以特定字符串开头的单词

grep '\<word'

搜索以特定字符串结尾的单词

grep 'word\>'

搜索以特定字符串开头的行

grep '^word'

搜索以特定字符串结尾的行

grep 'word$'

显示上下文

  • 显示 n 行上文
grep 'word' -B n
  • 显示 n 行下文
grep 'word' -A n
  • 显示上文和下文各 n 行
grep 'word' -C n

正则表达式

  • -e选项: 将模式串作为正则表达式进行匹配。
  • -G选项: 模式串是基本正则表达式。
  • -E选项: 模式串是扩展正则表达式。

过滤模式串

grep -v 'word'

查找所有不符合条件的行。

POSIX字符集

grep '[[:space:]]'

显示出所有有空格的行。

其他POSIX字符集的用法同上例。

##在一个目录下的所有文件中寻找一个字符串

举例:需要在code目录下寻找main_func符号,只需写成:

grep 'main_func' code/ -r

即可,为了增强搜索结果的可读性,可以写成这样:

grep --color -n 'main_func' code/ -r -C 2

其中,–color表示彩色输出,-n表示显示行号,即可以清楚地看见匹配的位置,-C 2表示输出两行上下文,进一步增强搜索结果的可读性。