从tar归档文件中删除文件的grep输出列表

时间:2019-06-10 14:04:47

标签: bash command-line grep tar

我正在寻找从tar存档中删除与文件名中的正则表达式模式匹配的文件。我当前的流程是:

tar -tf LC080330242019031901T1-SC20190606111327.tar | grep _b[1-9] | 

在tar中查询文件的位置。这给出了输出:

LC08_L1TP_033024_20190319_20190325_01_T1_b10.tif
LC08_L1TP_033024_20190319_20190325_01_T1_b11.tif
LC08_L1TP_033024_20190319_20190325_01_T1_b2.tif
LC08_L1TP_033024_20190319_20190325_01_T1_b1.tif
LC08_L1TP_033024_20190319_20190325_01_T1_b6.tif
LC08_L1TP_033024_20190319_20190325_01_T1_b8.tif
LC08_L1TP_033024_20190319_20190325_01_T1_b5.tif
LC08_L1TP_033024_20190319_20190325_01_T1_b3.tif
LC08_L1TP_033024_20190319_20190325_01_T1_b4.tif
LC08_L1TP_033024_20190319_20190325_01_T1_b9.tif
LC08_L1TP_033024_20190319_20190325_01_T1_b7.tif

但是我终生无法找到命令,然后从tar文件中删除此文件列表。

1 个答案:

答案 0 :(得分:1)

正如我在评论中提到的那样,使用tar -tf test.tar | grep <regex> | xargs --replace=FILES tar -f test.tar --delete FILES对我有用,因为我正在检查是否能够在本地环境中做到这一点。

我不确定为什么要使用该命令确实需要xargs,因为我最初也曾用tar的输出来调用grep是可行的,但请咨询该人员页面,事实证明,xargs的确切用途是:从标准输入生成并执行命令行命令。

以前,我的大部分使用来自需要使用xargs -n 1来逐一处理参数时,但这非常有趣。