在unix中按日期搜索.tar.gz文件中的文件

时间:2013-10-15 05:10:00

标签: shell unix scripting ksh

我想问一下是否有办法在.tar.gz文件中搜索文件而不提取它?如果有,有没有办法按日期搜索该文件?

我的操作系统是AIX。

谢谢!

2 个答案:

答案 0 :(得分:0)

可以指示

tar保存它归档的文件的时间,但并非所有的tars都这样做,并且遗憾的是,在这种情况下我不熟悉特定于AIX的tar。您需要知道的是,是否使用--atime-preserve调用了tar(AIX tar可能不支持此操作;请务必检查),并且当您调用提取时,必须使用-p标志。所以,你会有这样的事情:

tar zxpf file.tar.gz the/file/you/want.txt

您可能会发现Unix(cf Linux)tar不支持-j-z,因此您必须使用:

gzip -dc file.tar.gz | tar xf - the/file/you/want.txt

从管道运行命令。在这种情况下,您需要知道要提取的文件的名称,您可以从中获取:

tar tf file.tar.gz

根据需要使用压缩。如果您正在寻找名为foo的文件,显然您可以使用| grep foo

我认为,根据tarball中文件的修改日期,我不认为可以从tar中提取文件 - 至少我无法在文档中找到对此类文件的支持。请记住,tar只是磁带归档器,并不打算做这些奇特的事情。 : - )

最后,你可以这样做:

tar xvf file.tar `tar tf file.tar | grep foo`

如果你想从file.tar中拉出与'foo'相匹配的所有文件(yada yada以上压缩)。我不建议在实际的磁带机上运行该命令!

答案 1 :(得分:0)

$ tar tzf archive.tar.gz | grep"搜索"