当我跑步时
curl -J -O --location-trusted "http:..."
它正确保存文件,但文件名(来自响应的文件名)看起来像11%20-%204%20-%20....
。我怎么能告诉curl解码它并用空格,括号等保存该名称?
答案 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
占绝大多数。{}