Bash 从zip文件流中获取第一个文件名?

Bash 从zip文件流中获取第一个文件名?,bash,header,zip,Bash,Header,Zip,我只想从远程zip存档中提取第一个文件名,而不下载整个zip。特别是,我正在尝试获取的内部版本号。由于文件很大,我不想下载整个文件 如果我下载整个文件,unzip-l将第一个文件报告为:0 2013-04-07 12:18 dartium-lucid64-inc-21033.0/。我只想得到这个文件名,这样我就可以将21033部分解析为内部版本号 我在做这个(完全的黑客): 当我的shell处于ASCII模式时,它是工作的,但我最近将它切换到UTF-8,似乎sed现在正在尊重这一点,这打破了我的

我只想从远程zip存档中提取第一个文件名,而不下载整个zip。特别是,我正在尝试获取的内部版本号。由于文件很大,我不想下载整个文件

如果我下载整个文件,
unzip-l
将第一个文件报告为:
0 2013-04-07 12:18 dartium-lucid64-inc-21033.0/
。我只想得到这个文件名,这样我就可以将
21033
部分解析为内部版本号

我在做这个(完全的黑客):

当我的shell处于ASCII模式时,它是工作的,但我最近将它切换到UTF-8,似乎sed现在正在尊重这一点,这打破了我的脚本

我想通过以下方式破解它:

export LANG=
curl -s ...
但这似乎是一个更大的攻击


有更好的方法吗?

首先,可以使用curl设置字节范围

接下来,使用“字符串”从二进制流中提取所有字符串

在“p”之后添加“q”以在仅查找第一次出现后退出

curl -s $_url -r0-256 | strings | sed -n "s:.*dartium-lucid64-inc-\([0-9]\+\).*:\1:p;q"
或者这个:

curl -s $_url -r0-256 | strings | sed -n "/dartium-lucid64/{s:.*-\([^-]\+\)\/.*:\1:p;q}"

它必须更快更可靠。此外,它还提取完整版本,包括subversion(如果需要)。

首先,可以使用curl设置字节范围

接下来,使用“字符串”从二进制流中提取所有字符串

在“p”之后添加“q”以在仅查找第一次出现后退出

curl -s $_url -r0-256 | strings | sed -n "s:.*dartium-lucid64-inc-\([0-9]\+\).*:\1:p;q"
或者这个:

curl -s $_url -r0-256 | strings | sed -n "/dartium-lucid64/{s:.*-\([^-]\+\)\/.*:\1:p;q}"

它必须更快更可靠。此外,它还提取完整版本,包括subversion(如果您需要)。

这是一个非常酷的解决方案,可以在不下载整个内容的情况下获取有关文件列表的信息,谢谢!这是一个非常酷的解决方案,可以在不下载整个内容的情况下获取有关文件列表的信息,谢谢!