从存档文件中有条件地提取文件
Conditional extraction of files from an Archive file
我有一个很大的 tar.gz 存档文件,其中包含 nxml
个文件,总大小约为 5gb。
我的目标是从中提取文件,但我不必提取所有文件。我必须提取所有名称大于阈值的文件。
例如:
让我们考虑 1000 是我们的阈值。所以
path/to/file/900.nxml
不会被提取但是
path/to/file/1100.nxml
将被提取。
所以我的要求是有条件地从存档中提取文件。
谢谢
- 使用
tar -tf <archive>
获取存档中的文件列表。
- 处理文件列表以确定您需要提取的文件。将文件列表写入临时文件
<filelist>
,每个文件一行。
- 查看您选择的标签,您可以根据需要使用 Python 或 bash 进行字符串过滤。
- 使用
tar -xf <archive> -T <filelist>
提取您需要的文件。
选项 -T
或 --files-from
从给定文件中读取要处理的文件名。
- 另见 manpage for tar。
您还可以使用 tar 的 --wildcards
选项。
例如,当您的阈值为 1000 时,您可以使用 tar -xf tar.gz --wildcards path/to/files/????*.nxml
。 ?
将匹配一个字符,使用 *
将匹配任意数量的字符。此模式将查找包含 4 个或更多字符的任何文件名。
希望这有帮助。
我有一个很大的 tar.gz 存档文件,其中包含 nxml
个文件,总大小约为 5gb。
我的目标是从中提取文件,但我不必提取所有文件。我必须提取所有名称大于阈值的文件。
例如:
让我们考虑 1000 是我们的阈值。所以
path/to/file/900.nxml
不会被提取但是
path/to/file/1100.nxml
将被提取。
所以我的要求是有条件地从存档中提取文件。
谢谢
- 使用
tar -tf <archive>
获取存档中的文件列表。 - 处理文件列表以确定您需要提取的文件。将文件列表写入临时文件
<filelist>
,每个文件一行。- 查看您选择的标签,您可以根据需要使用 Python 或 bash 进行字符串过滤。
- 使用
tar -xf <archive> -T <filelist>
提取您需要的文件。
选项-T
或--files-from
从给定文件中读取要处理的文件名。- 另见 manpage for tar。
您还可以使用 tar 的 --wildcards
选项。
例如,当您的阈值为 1000 时,您可以使用 tar -xf tar.gz --wildcards path/to/files/????*.nxml
。 ?
将匹配一个字符,使用 *
将匹配任意数量的字符。此模式将查找包含 4 个或更多字符的任何文件名。
希望这有帮助。