我正在寻找从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文件中删除此文件列表。
答案 0 :(得分:1)
正如我在评论中提到的那样,使用tar -tf test.tar | grep <regex> | xargs --replace=FILES tar -f test.tar --delete FILES
对我有用,因为我正在检查是否能够在本地环境中做到这一点。
我不确定为什么要使用该命令确实需要xargs
,因为我最初也曾用tar
的输出来调用grep
是可行的,但请咨询该人员页面,事实证明,xargs
的确切用途是:从标准输入生成并执行命令行命令。
以前,我的大部分使用来自需要使用xargs -n 1
来逐一处理参数时,但这非常有趣。