来自 TAR 输出的 Grep 模式
Grep Pattern From TAR Output
===更新===
@Cyrus 的回答是有效的,但是,这导致了另一个我错过的相关问题。
有一些文件夹在文件夹中包含文件夹,所以 httpdocs/<folder1>/<folder2>/<etc>/index.php
所以 '*' 也在挑选它们。
我真的只想匹配模式 httpdocs/<folder>/index.php
我对 RegEx 很不满意,所以不确定我可以输入什么。有什么想法吗?
我有一个 25GB tar.gz
文件,我想从中提取某些文件。文件位置是:
httpdocs/<account>/index.php
<account>
只是意味着它只是一个名称 - 不是特别重要。
大约有 70 多个 index.php
文件采用这种格式,我只需要从 TAR.
中提取这些文件
我可以像这样针对每个单独的文件执行此操作 (tar -xf site_support_server.com_user-data_1509221232.tgz httpdocs/hotel/index.php
),但正如我所说,它们大约有 70 个,我不想一个一个地检查它。
我认为 tar -xf site_support_server.com_user-data_1509221232.tgz httpdocs/*/index.php
可能会起作用,但我认为它无法将“*”识别为通配符。
我是不是遗漏了什么或者其他人对如何快速执行此操作有任何建议?
非常感谢!
您可以在一个命令中列出多个存档成员。这意味着您可以:
tar -tf some.tar.gz | grep '/index.php$' | xargs tar -xf some.tar.gz
注意路径中的空格 - 也许您需要用空字节替换换行符并使用 xargs -0
使用 GNU tar:
tar -xvzf your_file.tgz --wildcards "*/index.php"
更新
tar -tvzf your_file.tgz --wildcards "httpdocs/*/index.php" --exclude="httpdocs/*/*/index.php"
===更新===
@Cyrus 的回答是有效的,但是,这导致了另一个我错过的相关问题。
有一些文件夹在文件夹中包含文件夹,所以 httpdocs/<folder1>/<folder2>/<etc>/index.php
所以 '*' 也在挑选它们。
我真的只想匹配模式 httpdocs/<folder>/index.php
我对 RegEx 很不满意,所以不确定我可以输入什么。有什么想法吗?
我有一个 25GB tar.gz
文件,我想从中提取某些文件。文件位置是:
httpdocs/<account>/index.php
<account>
只是意味着它只是一个名称 - 不是特别重要。
大约有 70 多个 index.php
文件采用这种格式,我只需要从 TAR.
我可以像这样针对每个单独的文件执行此操作 (tar -xf site_support_server.com_user-data_1509221232.tgz httpdocs/hotel/index.php
),但正如我所说,它们大约有 70 个,我不想一个一个地检查它。
我认为 tar -xf site_support_server.com_user-data_1509221232.tgz httpdocs/*/index.php
可能会起作用,但我认为它无法将“*”识别为通配符。
我是不是遗漏了什么或者其他人对如何快速执行此操作有任何建议?
非常感谢!
您可以在一个命令中列出多个存档成员。这意味着您可以:
tar -tf some.tar.gz | grep '/index.php$' | xargs tar -xf some.tar.gz
注意路径中的空格 - 也许您需要用空字节替换换行符并使用 xargs -0
使用 GNU tar:
tar -xvzf your_file.tgz --wildcards "*/index.php"
更新
tar -tvzf your_file.tgz --wildcards "httpdocs/*/index.php" --exclude="httpdocs/*/*/index.php"