我正在为bash编写脚本,我需要使用wget获取下载文件的名称并将名称放入$ string
例如,如果我在下面下载这个文件,我想把它的名字命名为mxKL17DdgUhcr.jpg到$ string
wget http://pics.sitename.com/images/191211/mxKL17DdgUhcr.jpg
45439 (44K) [image/jpeg]
Saving to: «mxKL17DdgUhcr.jpg»
100%[===================================================================================================>] 45 439 --.-K/s ? 0s
2011-12-20 12:25:33 (388 MB/s) - «mxKL17DdgUhcr.jpg» saved [45439/45439]
Run Code Online (Sandbox Code Playgroud)
est*_*est 37
wget --server-response -q -O - "https://very.long/url/here" 2>&1 |
grep "Content-Disposition:" | tail -1 |
awk 'match($0, /filename=(.+)/, f){ print f[1] }' )
Run Code Online (Sandbox Code Playgroud)
这是正确的版本,因为可能有几个301/302重定向,最后是一个Content-Disposition:标头来设置文件名
根据URL猜测文件名并不总是正确的.
dog*_*ane 31
使用该basename命令从URL中提取文件名.例如:
url=http://pics.sitename.com/images/191211/mxKL17DdgUhcr.jpg
filename=$(basename "$url")
wget "$url"
Run Code Online (Sandbox Code Playgroud)
pgl*_*pgl 17
您可以在下载前指定文件名,并可-O选择wget:
wget -O myfile.html http://www.example.com/
Run Code Online (Sandbox Code Playgroud)