← Back to team overview

sslug-teknik team mailing list archive

Re: md5sum [Det må da kunne gøres lettere]

 

On Mon, Oct 21, 2002 at 20:32:38 +0200, Kim Hermansen wrote:

....

> eks:
> md5sum /home/kim/en_fil.tar.gz > MD5SUM
> giver en MD5SUM fil indeholdende: 9c929d4f35ee94ebd907de4a37725b56  /home/kim/en_fil.tar.gz
> 
> Det er ikke det jeg vil have men : 9c929d4f35ee94ebd907de4a37725b56  en_fil.tar.gz
> er det jeg vil have. Jeg troede at der nok var en option til det formål, men desværre
> ser det ikke lige ud til.
> 
> Så jeg har været ved at "fumle" lidt rundt, og er nået frem til (i bedste fald) et fungerende
> resultat. Men det er ikke pænt, og så MÅ der da være en smatere måde.
> 
> Mit "fungerende" resultat er som følger:
> FIL=`ls $UDMAPPE | grep $DATO |grep .gz| cut -d. -f1 `
> md5sum $UDMAPPE/$DATO--*.tar.gz | awk '{print $1, " '$FIL'.tar.gz"}' > $UDMAPPE/$DATO--MD5SUM

Ja der har været mange forslag, men hvorfor ikke bruge bash ?
parameter expansion er vist en meget overset detalje, 
så hverken sed, awk, basename mv. er nødvendigt.

prøv:
  fil=.....
  echo "${fil##*/}"    # alt der matcher "*/" fjernes.

dvs.:

fil="${UDMAPPE}/${DATO}/xyx.tar.gz"
md5=( `md5sum "$fil"` ) # array med 2 elementer
echo "${md5[0]} ${md5[1]##*/}" > "${UDMAPPE}/${DATO}--MD5SUM"

Det kan evt. laves som funktion i bash som indlæses fra 
.profile eller lignende

my_md5sum() {
# arg 1 : filnavn med fuld path
# resultat til stdout
md5=( `md5sum <  "$1"` ) # gem i array, men kun md5sum værdien benyttes
echo "${md5[0]} ${1##*/}"
}

Kan så kaldes med:

my_md5sum "${UDMAPPE}/${DATO}-xyz.tar.gz" > "${UDMAPPE}/${DATO}--MD5SUM"

Filer med mellemrum kan måske give et problem i MD5SUM filen,
men problemet er det samme med den originale md5sum.

-- 
mvh Frank Damgaard  | 



Follow ups

References