从存档文件中有条件地提取文件

Conditional extraction of files from an Archive file

我有一个很大的 tar.gz 存档文件,其中包含 nxml 个文件,总大小约为 5gb。 我的目标是从中提取文件,但我不必提取所有文件。我必须提取所有名称大于阈值的文件。

例如: 让我们考虑 1000 是我们的阈值。所以
path/to/file/900.nxml不会被提取但是
path/to/file/1100.nxml 将被提取。

所以我的要求是有条件地从存档中提取文件。
谢谢

  1. 使用 tar -tf <archive> 获取存档中的文件列表。
  2. 处理文件列表以确定您需要提取的文件。将文件列表写入临时文件<filelist>,每个文件一行。
    • 查看您选择的标签,您可以根据需要使用 Python 或 bash 进行字符串过滤。
  3. 使用tar -xf <archive> -T <filelist>提取您需要的文件。
    选项 -T--files-from 从给定文件中读取要处理的文件名。

您还可以使用 tar 的 --wildcards 选项。
例如,当您的阈值为 1000 时,您可以使用 tar -xf tar.gz --wildcards path/to/files/????*.nxml? 将匹配一个字符,使用 * 将匹配任意数量的字符。此模式将查找包含 4 个或更多字符的任何文件名。
希望这有帮助。