【问题标题】:Conditional extraction of files from an Archive file从存档文件有条件地提取文件
【发布时间】:2019-08-08 06:31:47
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

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

      【讨论】:

      • 谢谢,正如我所说,我的存档中有大约 50 万个文件,那么命令 tar -xf <archive> file1 file2 ... 是否有任何限制如果是,请您提及限制,以便我可以做到分阶段提取。
      • 感谢提醒,我已经更新了我的答案。选项--files-from(简称-T)是您克服命令行长度限制所需要的。
      猜你喜欢
      • 2015-12-13
      • 2014-09-10
      • 2021-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 2017-07-31
      相关资源
      最近更新 更多