我需要 wget 保存到不同的文件夹、不同的文件名和相同的扩展名,但在下载之前我没有文件名。
例如,假设我有:
http://ge.tt/api/1/files/someFile/0/blob?download
我需要将其下载到一个id,“fj39ejd”在文件夹中downloads
。
将其保存到的最佳方法是什么:
/path/to/downloads/fj39ejd.[extension it had before downloading]
关于如何实现这一目标有什么建议吗?
答案1
如果您希望本地文件具有服务器选择的名称,请使用wget --content-disposition --trust-server-names
。
如果您希望服务器选择的扩展具有本地选择的名称,则必须随后重命名。最简单的方法是创建一个空目录,调用wget
该目录,然后将创建的任何文件重命名为您想要的名称。
dir="$(TMPDIR=$PWD mktemp -d)" &&
(cd "$dir" && wget --content-disposition --trust-server-names 'http://ge.tt/api/1/files/someFile/0/blob?download') &&
set "$dir/"* &&
mv "$1" "fj39ejd.${1#"$dir"/*.}" &&
rmdir "$dir"
答案2
我实际上想出了两种可行的方法:
a) 您可以将其保存到文件夹“fj39ejd” 看起来像:
downloads/fj39ejd/theFileNameThatWasBeing.Downloaded
或 b) 您可以创建一个tmp
文件夹,该文件夹将在 while 循环中检查它是否包含包含“fj39ejd“然后explode
就是获取扩展。但是,这个有点贵,而且连接可能会超时。