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

标签 bash unzip

我必须根据其内部结构处理 46 个 .zip 文件。

分支阐述的第一个有用检查是检查 .zip 中是否存在特定文件。

实际上我正在解压缩并测试解压缩文件是否存在。

但是,我问你,有没有一种方法可以只使用 bash 命令来检查文件是否在 zip 文件中而无需完全解压缩?

最佳答案

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

unzip -l archive.zip | grep -q name_of_file && echo $?

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

unzip -l archive.zip | grep -q name_of_file;
if [ "$?" == "0" ]
then
    ...
fi;

关于Bash:如何检查 zip 文件是否包含指定的路径/file.ext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46034256/

相关文章:

macos - 如何在 MacOS 上获取 shell 脚本的绝对路径名?

ubuntu - 当我尝试在 .bashrc 中添加命令时找不到命令消息

azure - 我可以在 Azure Blob 存储中解压缩文件吗?

linux - 如何 zcat 内联两个文件来执行 diff?

linux - 将目录中每个文件的标签之间的文件内容提取到新位置

linux - 使用一个变量作为另一个变量名称的一部分

javascript - 解压程序忽略空目录

ruby-on-rails - NameError - 未初始化的常量 Zip

tar - 列出 tar 文件中 zip 文件的内容

http - 如何在 Erlang 中解压 unzip multipart/form-data?