return 使用 curl 下载文件后的文件名

return filename after downloading file with curl

我想将文件名捕获到使用 curl 下载的文件的变量中。我正在使用以下标志来保留文件名,如下所示使用 --remote-name

我的代码:

file1=$(curl -O --remote-name 'https://url.com/download_file.tgz')
echo $file1
file1=download_file.tgz
url=https://url.com/$file1 #encoding this might be necessary
curl -O --remote-name $url
echo $file1

如果要构建 URL,您需要知道要下载的文件名,那么您不需要 curl 的任何信息来识别它下载的文件,除非没有 1:1 URL 的基本名称与下载的文件之间的关系。

您可以使用 curl 的 -w|--write-out 开关:

file1="$(curl -O --remote-name -s \
    -w "%{filename_effective}" "https://url.com/download_file.tgz")"
echo "$file1"