找出 .zip 文件根目录中的文件夹名称

找出 .zip 文件根目录中的文件夹名称

我使用 Fedora 17 和 bash 作为 shell。我有一个特定的 zip 文件,其根目录中只有一个文件夹。即,解压 zip 文件后,我看到以下内容:

> unzip myzip.zip
> ls
myzip.zip folderThatWasInsideZip

假设你知道 zip 文件中只包含 1 个文件夹,我该如何找出zip 文件内主文件夹的名称,实际上并没有解压 zip 文件?

我正在寻找一行程序,可以让我做这样的事情:

> <command> myzip.zip
folderThatWasInsideZip

我知道有办法用 列出 zip 中的所有文件less,但这会列出子目录中的所有文件等。我只想知道一个文件夹的名称。我知道我缺少一些基本的东西。

答案1

此命令似乎可以执行您想要的操作:

unzip -qql myzip.zip | head -n1 | tr -s ' ' | cut -d' ' -f5-

或者使用 GNU sed:

unzip -qql myzip.zip | sed -r '1 {s/([ ]+[^ ]+){3}\s+//;q}'

答案2

unzip -Z调用Zipinfo 模式,这意味着你可以调用unzip -Z -1 myzip.zip | head -1相同的结果,但它更简洁

答案3

您可以使用以下 shell 命令执行此操作:

unzip -qql myzip.zip | head -n1 | awk '{print $4}'

它是一个 unix 命令管道。unzip -qql列出 zip 文件中的文件。head -n1剪切其第一行,同时awk '{print $4}'打印其第四个单词。

请注意,如果 zip 文件中的第一个条目包含空格,则无法正常工作。通常,处理此类命令的输出是一种不好的做法,但对于快速而粗糙的解决方案来说,这可能是可以的。

相关内容