¿Cómo puedo descargar una imagen, hacer un hash md5 de la imagen y guardar esa imagen con el hash md5 como nombre en un directorio usando wget?
# 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
Respuesta1
Puedes hacerlo de diferentes maneras. Un pequeño guión ayudará. Puedes llamarlo con
/bin/bash myscript.sh http://yourhost/yourimage.ext where_to_save
. El directorio de destino es opcional:
#!/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
El comando dirname
elimina el último componente del nombre del archivo, y el comando basename
elimina el directorio y el sufijo de los nombres de archivo.
Incluso puede decidir guardar directamente el archivo desde wget en el directorio de destino y luego calcular la suma md5 y cambiarle el nombre. En este caso es necesario utilizar wget From_where/what.jpg -O destpath
. La nota es una o mayúscula O
y no un cero.
Respuesta2
Esto es un poco complejo para wget, ya que su único propósito es simplemente extraer cosas de las redes internas. Probablemente tendrás que cambiar un poco las cosas.
$ 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
Como es un poco desagradable copiar pasta todo el tiempo, puedes simplemente crear un script de shell y llamarlo con "./fetch.shhttp://ejemplo.com/imagen.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}
Hice una edición rápida para que lo anterior funcione para todos los tipos de archivos, no solo jpg.