【问题标题】:How to capture the file size from a URL and use it in Shell scripting如何从 URL 捕获文件大小并在 Shell 脚本中使用它
【发布时间】:2016-07-13 22:44:17
【问题描述】:
URL_C="any url"
length_C=$(curl -sI $URL_C | grep Content-Length | cut -d ' ' -f 2)
answer_C=$(awk -v len=$length_C 'BEGIN{printf "%.0f\n", len/1024}')

变量$answer_C 会捕获文件大小吗?

Content-Length是正确的方式吗?

【问题讨论】:

  • size=$(curl -si "$url" | awk '/Content-Length/{print $2}') 应该将 Content-Length 值存储到变量中,但它不适用于“any_url”,因为某些服务器并不总是输出此标头。
  • @Kenavoz:假设存在内容标题。内容头具有一定的价值。现在我将该文件下载到我的服务器上,并比较文件大小(来自 URL 和系统)。不一样。这是否意味着下载后,磁盘上的文件大小会增加。我希望能够将它们等同起来
  • 下载后文件大小应该一致。您可以将Content-Length 值与wc -c < "yourfile" 进行比较

标签: linux bash shell scripting centos


【解决方案1】:

您可以检索标题,然后按照@user000001 的建议尝试awk Content-Length 值,如果找不到,请下载文件以计算字符数:

url="your_url"
size=$(curl -sI "$url" | awk '/Content-Length/{gsub("\\r", ""); print $2}')
if [ -z "$size" ]; then 
    size=$(curl -s "$url" | wc -c)
fi
printf "%s : %d bytes\n" "$url" "$size"

注意:awk 命令中的gsub("\\r", "") 用于从 curl 输出中删除回车符。

【讨论】:

  • 感谢@user3439894。已更新。
猜你喜欢
  • 2011-05-28
  • 2013-06-18
  • 1970-01-01
  • 2019-11-15
  • 1970-01-01
  • 1970-01-01
  • 2013-09-12
  • 2014-05-11
  • 2020-04-17
相关资源
最近更新 更多