列出tar压缩包中的第一级目录

  相信很多人经常会需要在不解压的情况下,了解一个tar包的根目录的信息。  这个通过  tar 配合简单的 grep, awk命令就能实现。

 

  今天突然想记录下其中的技巧供自己和大家日后参考。 很久没有写博客了,不知道是哪根筋恢复正常了生气


bell@bell-desktop:~/embtv/Apollo-pro$ tar tjvf qt_all_class.tar.bz2 | grep ^d  | awk -F/  '{if(NF<4) print }'
     // awk 中的 NF 是由'/' 分割后的 字段个数! 而不是 '/' 的个数!
     // 而且,行尾的'/' 后面,即使没有字符了,其后也被计算入一个 字段!!!
     // 例如下面的: drwxr-xr-x root/root         0 2011-08-26 09:18 bin/   就是3个field!!!
     
tar: Record size = 8 blocks
drwxr-xr-x root/root         0 2011-08-26 09:18 bin/
drwxr-xr-x root/root         0 2011-08-26 09:18 imports/
drwxr-xr-x root/root         0 2011-08-26 09:18 include/
drwxr-xr-x root/root         0 2011-08-26 09:18 lib/
drwxr-xr-x root/root         0 2011-08-26 09:18 mkspecs/
drwxr-xr-x root/root         0 2011-08-26 09:18 plugins/
drwxr-xr-x root/root         0 2011-08-26 09:18 translations/
bell@bell-desktop:~/embtv/Apollo-pro$
bell@bell-desktop:~/embtv/Apollo-pro$  tar tjvf qt_all_class.tar.bz2 | grep ^d | awk '{print $6}' | awk -F/ '{if (NF<3) print }'

     // 第一个 awk 是取得以空格(这个是默认的分隔符)分隔开的字段中的第六个字段,也就是其中的路径信息部分。
tar: Record size = 8 blocks
bin/
imports/
include/
lib/
mkspecs/
plugins/
translations/
bell@bell-desktop:~/embtv/Apollo-pro$

 

 

你可能感兴趣的:(列出tar压缩包中的第一级目录)