Bash:如何检查zip文件是否包含指定的路径/ file.ext?

rea*_*ebo 6 bash unzip

我要根据内部结构处理46 .zip文件.

分支详细信息的第一个有用的检查是检查特定文件是否在.zip中是presente.

实际上我是解压缩并测试解压缩文件的存在.

但是,我问你,有没有办法检查文件是否在zip文件中,而不是完全提取它,只使用bash命令?

cam*_*ski 9

要检查特定文件,您可以结合unzip -l使用grep以搜索该文件.该命令看起来像这样

unzip -l archive.zip | grep -q name_of_file && echo $?
Run Code Online (Sandbox Code Playgroud)

它的作用是列出所有文件archive.zip,管道它们grep搜索name_of_file.如果找到匹配项grep,则退出退出代码0.-q静默grep的输出并0在找到匹配时立即退出退出代码.在echo $?将打印的退出代码grep.如果要在if语句中使用它,您的bash脚本将如下所示:

unzip -l archive.zip | grep -q name_of_file;
if [ "$?" == "0" ]
then
    ...
fi;
Run Code Online (Sandbox Code Playgroud)