在tar使用通配符找到n个匹配项时进行查找

时间:2019-06-22 05:48:54

标签: wildcard tar

我正在尝试从一个巨大的tar文件中提取使用通配符的列表中的某些文件。我正在使用循环读取列表,但是从列表中的一个元素传递到下一个元素花费的时间太长,我猜测是因为试图通过整个tar文件匹配该元素。我希望任何元素匹配2次后,循环继续下一个。

while read line;do
 tar --wildcards  -xzvf file.tar.gz "$line"
done <$file

一行看起来像这样

dataset/0113947.*

1 个答案:

答案 0 :(得分:1)

一旦发现两个文件,我就积极地杀死tar进程。这是我的解决方法

file=list.txt
while read line;do
 tar --wildcards --checkpoint=10000 --checkpoint-action=exec='sh stop.sh dummy.txt 1' -xzvf ny_file.tar.gz "$line" > dummy.txt
done <$file

stop.sh在其中检查dummy.txt是否超过两行并杀死该进程。

n=$(wc -l < $1)
if [ $n -gt 1 ];then
 kill $(ps aux|grep "[t]ar --wildcards*" |  cut -d " " -f 4)
fi

我不得不使用cut来恢复ID进程,因为awk的单引号很麻烦