Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 循环tar列表并查看包含特定文件的tar文件名_Unix - Fatal编程技术网

Unix 循环tar列表并查看包含特定文件的tar文件名

Unix 循环tar列表并查看包含特定文件的tar文件名,unix,Unix,在filename*.tar.gz列表中,我需要查看tar文件名,其中有file1.txt。 如何改进此说明 for file in filename*.tar.gz; do tar -ztvf "$file" | grep 'file1.txt' ;done 到目前为止,您所拥有的将在与模式“file1.txt”匹配的tar中打印条目,但它不会打印包含该条目的tar文件本身的名称 如果要打印包含file1.txt的tar文件的名称,可以使用如下条件语句: for file in filen

filename*.tar.gz
列表中,我需要查看tar文件名,其中有
file1.txt
。 如何改进此说明

for file in filename*.tar.gz; do tar -ztvf "$file" | grep 'file1.txt'  ;done

到目前为止,您所拥有的将在与模式“file1.txt”匹配的
tar
中打印条目,但它不会打印包含该条目的
tar
文件本身的名称

如果要打印包含
file1.txt
tar
文件的名称,可以使用如下条件语句:

for file in filename*.tar.gz; do
    if tar ztf "$file" | grep -q file1.txt; then
        echo "$file"
    fi
done
这里的条件是
grep
的退出代码。如果找到模式,
grep
以零退出,这意味着成功,将执行
echo“$file”

还请注意,我将
-q
标志添加到
grep
以使其安静,并且不会像默认情况下那样打印匹配的行。有了这个标志,
grep
什么也不输出,这很好,我们只需要退出代码来决定条件语句

更紧凑的等价物:

for file in filename*.tar.gz; do
    tar ztf "$file" | grep -q file1.txt && echo "$file"
done