我如何下载图像、对图像进行 md5 哈希处理,然后使用 wget 将该图像以 md5 哈希为名称保存到目录中?
# An example of the image link...
http://31.media.tumblr.com/e1b8907c78b46099fd9611c2ab4b69ef/tumblr_n8rul3oJO91txb5tdo1_500.jpg
# Save the image linked with for name the MD5 hash
d494ba8ec8d4500cd28fbcecf38083ba.jpg
# Save the image with the new name to another directory
~/Users/TheGrayFox/Images/d494ba8ec8d4500cd28fbcecf38083ba.jpg
答案1
你可以用不同的方法来实现。一个小脚本会有所帮助。你可以用 来调用它
/bin/bash myscript.sh http://yourhost/yourimage.ext where_to_save
。目标目录是可选的:
#!/bin/bash
MyLink=${1}
DestDir=${2:-"~/Users/TheGrayFox/Images/"} # fix destination directory
MyPath=$(dirname $MyLink) # strip the dirname (Not used)
MyFile=$(basename $MyLink) # strip the filename
Extension="${MyFile##*.}" # strip the extension
wget $MyLink # get the file
MyMd5=$(md5sum $MyFile | awk '{print $1}') # calculate md5sum
mv $MyFile ${DestDir}/${MyMd5}.${Extension} # mv and rename the file
echo $MyMd5 # print the md5sum if wanted
该命令dirname
从文件名中去除最后一个组件,该命令basename
从文件名中去除目录和后缀。
您甚至可以决定直接从 wget 将文件保存到目标目录中,然后计算 md5sum 并重命名。在这种情况下,您需要使用wget From_where/what.jpg -O destpath
。注意是大写的 oO
而不是零。
答案2
这对于 wget 来说有点复杂,因为它的唯一目的就是从 intarwebs 中提取内容。您可能需要稍微调整一下。
$ wget -O tmp.jpg http://31.media.tumblr.com/e1b8907c78b46099fd9611c2ab4b69ef/tumblr_n8rul3oJO91txb5tdo1_500.jpg; mv tmp.jpg $(md5sum tmp.jpg | cut -d' ' -f1).jpg
$ ls *jpg
fdef5ed6533af93d712b92fa7bf98ed8.jpg
由于一直复制粘贴有点令人讨厌,您可以创建一个 shell 脚本并使用“./fetch.sh”调用它http://example.com/image.jpg“
$ cat fetch.sh
#! /bin/bash
url=$1
ext=${url##*.}
wget -O /tmp/tmp.fetch $url
sum=$(md5sum /tmp/tmp.fetch | cut -d' ' -f1)
mv /tmp/tmp.fetch ${HOME}/Images/${sum}.${ext}
我做了快速编辑,使上述内容适用于所有文件类型,而不仅仅是 jpg。