2012-08-06 69 views
1

所以我有一个tarball的目录。即/ home/username/dir_w_tarballs。其中一个tarball是一位曾经在这里工作的工程师的许可证密钥。如何在目录中的每个tarball中搜索特定文件?类似于find . -name some_file?我知道我可以用tar -jtvf file.tar.bz2搜索一个tarball。我希望有更广泛的范围。搜索文件的tarball目录?

回答

2

如何:

find -name '*.tar' -o -name '*.tar.*' | while read f; do 
    tar -tf "$f" | grep some_file | sed "s|^|$f:|" 
done 

它会递归查找当前目录下的所有压缩包,列出他们中的每一个,使用grep来搜索特定的文件,然后sed预先设置压缩包的名称以每比赛,这样你就能够知道哪些压缩包里面包含每场比赛...

+0

感谢您的快速反应!似乎没有为我工作。我进入这一切作为一个行命令,这样 – Houdini 2012-08-06 21:01:02

+0

@Houdini:如果你进入它作为一个内胆,你需要一个额外的',''之前... done' – thkala 2012-08-06 21:03:28

+0

@Houdini:这也假设一个比较新的如果没有明确的'-z' /'-j'选项可以解压缩包'tar'版本... – thkala 2012-08-06 21:04:29