sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #56202
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