在tar.gz档案中找到文件


12

是否可以使用find命令,使其也使用通配符搜索tar.gz归档文件中的文件?

喜欢

find archive.tar.gz --name *foo*

Answers:


17

怎么样:

$ tar tf archive.tar.gz | grep foo

那不是列出所有文件吗?
夹紧

@clamp是的,如果要对每个文件执行操作,只需将输出通过管道传递给另一个命令。

谢谢!抱歉,但是我是UNIX中的新手。我尝试过:tar tf graphics.tar.gz | find . --name *space*但它说unkown predicate --name
夹住

@clamp find参数仅带一个破折号,但是因为它是stdin上的文件列表,所以您想使用它grep,例如hesse的示例代码。试试tar tf graphics.tar.gz | grep 'space'
凯文

1
grep *foo*不是有效的正则表达式。greg不了解glob,但了解正则表达式。试试吧grep foo
Alexios 2012年

3

将归档文件挂载为目录。您可以使用AVFS文件系统来执行此操作,该文件系统允许您以名称结尾带有目录的目录访问任何归档#

mountavfs
cd ~/.avfs$PWD
find archive.tar.gz\# -name '*foo*'

无法使用gzip
van abel

@vanabel gzip文件不包含其他文件。这只是一个压缩的文件。因此,有没有“内部”查找英寸
吉尔“SO-停止作恶”

2

我认为它没有管道和grep。

像这样: tar tvf archive.tar.gz "foo"

这样,全局机制也将起作用。

tar tvf archive.tar.gz "*.foo"

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.