curl:如何编码文件名?

时间:2014-12-09 14:16:10

标签: bash curl

当我跑步时

curl  -J -O --location-trusted "http:..."

它正确保存文件,但文件名(来自响应的文件名)看起来像11%20-%204%20-%20....。我怎么能告诉curl解码它并用空格,括号等保存该名称?

1 个答案:

答案 0 :(得分:2)

答案:你不能。至少不是直接的。

-O(Capital" O")告诉curl在最后一个正斜杠之后的URL的最后部分之后命名该文件。如果包含编码字符,则文件名将包含编码字符。正如它在联机帮助页中所说:

  

文件名上没有进行URL解码。如果它具有%20或其他URL编码的部分名称,它们将按原样结束为文件名。

但是,您可以使用-o(小写" o")选项为您的文件指定正确的名称。在命名文件之前,您可以使用sed删除编码:

URL=.....
file_name=$(sed 's/%20/ /g' <<<${URL##*/})
curl -o "$file_name" $URL

注意:文件名中可能还有其他percent encoded characters,但空间%20占绝大多数。{}