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

时间:2019-08-08 06:31:47

标签: python bash gzip python-2.x tar

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

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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