如何使用 wget 下載映像並以 md5 哈希值作為名稱保存它?

如何使用 wget 下載映像並以 md5 哈希值作為名稱保存它?

如何下載映像、對影像進行 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 來說有點複雜,因為它的唯一目的是從內部網路中提取內容。你可能需要稍微調整一下事情的順序。

$ 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。

相關內容