来自TAR输出的Grep模式

时间:2016-02-07 09:17:39

标签: linux bash grep tar restore

=== UPDATE ===

@Cyrus答案是有效的,但是,这导致了另一个与我错过的相关问题。

文件夹中有一些包含文件夹的文件夹,因此httpdocs/<folder1>/<folder2>/<etc>/index.php以及&#39; *&#39;正在接受它们。

我真正想要的是匹配模式httpdocs/<folder>/index.php

我和RegEx的垃圾很不确定我能放什么。有什么想法吗?

我有一个25GB tar.gz文件,我想从中提取某些文件。文件位置为:

httpdocs/<account>/index.php

<account>只是意味着它只是一个名字 - 并不过分重要。

这些index.php个文件中有大约70个以这种格式存在,我只需从TAR中提取这些文件。

我可以按照个别文件(tar -xf site_support_server.com_user-data_1509221232.tgz httpdocs/hotel/index.php)进行此操作,但正如我所说,其中大约有70个,我不想通过它逐一进行操作。< / p>

我想也许tar -xf site_support_server.com_user-data_1509221232.tgz httpdocs/*/index.php会起作用,但我不认为它会识别出&#39; *&#39;作为通配符。

我是否遗漏了某些内容,或者其他人对如何快速做到这一点有任何建议?

非常感谢!

2 个答案:

答案 0 :(得分:1)

使用GNU tar:

tar -xvzf your_file.tgz --wildcards "*/index.php"

<强>更新

tar -tvzf your_file.tgz --wildcards "httpdocs/*/index.php" --exclude="httpdocs/*/*/index.php"

答案 1 :(得分:0)

您可以在一个命令中列出多个归档成员。这意味着你可以这样做:

tar -tf some.tar.gz | grep '/index.php$' | xargs tar -xf some.tar.gz

注意路径中的空格 - 也许您需要用空字节替换换行符并使用xargs -0