이미지를 다운로드하고, 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
. Note는 O
0이 아닌 대문자 o입니다 .
답변2
유일한 목적은 intarwebs에서 항목을 가져오는 것이기 때문에 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
항상 copypasta를 사용하는 것은 약간 불쾌하기 때문에 쉘 스크립트를 만들고 "./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뿐만 아니라 모든 파일 형식에 대해 위 작업이 작동하도록 빠른 편집을 수행했습니다.