根据文件名中的模式解压转换添加目录

根据文件名中的模式解压转换添加目录

背景:

我有 20 个左右的 tar 文件,每个文件大约 25G,包含几百万个文件。这些文件的目录结构不是所需的格式,所以我想修复这个问题。由于文件数量庞大,我一次完成的步骤越多越好。

我尝试过的:

我希望循环遍历 tar 文件并执行此提取和转换: tar -xf TX.tar.001 --transform 's,^TX/([a-zA-Z][a-zA-Z]*_([0-9][0-9]-[0-9][0-9]-[0-9][0-9])_[0-9][0-9]-[0-9][0-9]-[0-9][0-9]_.+\.[a-zA-Z][a-zA-Z]*),\2/\1,'

然而,tar 吐出了这个错误,而谷歌似乎对此知之甚少: Invalid transform replacement: back reference out of range

问题:

有什么建议,如何说服 tar 使用我的反向引用,或者以另一种方式执行此操作以便在合理的时间内完成?

答案1

尝试去掉每个组周围的括号:

tar -xf TX.tar.001 --transform 's,^TX/\([a-zA-Z][a-zA-Z]*_\([0-9][0-9]-[0-9][0-9]-[0-9][0-9]\)_[0-9][0-9]-[0-9][0-9]-[0-9][0-9]_.+\.[a-zA-Z][a-zA-Z]*\),\2/\1,'

相关内容