Giocando con la bash


Oggi ho avuto l’esigenza di ottenere in formato esadecimale le dimensioni dei files contenuti in una cartella.
Stanco di effettuare copia e incolla tra la calcolatrice e la shell, ho deciso di farmi dire tutto da questa ultima.
Nel giro di un quarto d’ora, giusto il tempo di leggere le varie manpages, ecco cosa ho tirato fuori.

Partenza

$ ls -l images/*
totale 12952
-rw-r--r-- 1 massi massi 11117611 2007-07-25 11:28 ramdisk.gz
-rwxr-xr-x 1 massi massi 193336 2007-07-25 10:43 redboot.bin
-rwxr-xr-x 1 massi massi 1930140 2007-07-25 10:41 zImage

Troppi dati, li limito con [tag]awk[/tag]

$ ls -l images/* | awk '{print $5}'

11117611
193336
1930140

Ora ho i dati cercati, ma c’e’ una riga bianca di troppo: chiedo aiuto a [tag]tail[/tag]

$ ls -l images/* | tail -n +2 | awk '{print $5}'
11117611
193336
1930140

Ok, la riga e’ sparita. Ora basta giocare un po’ con i campi di awk

$ ls -l images/* | tail -n +2 | awk '{printf("%s: %s(dec) %x(hex)\n", $8 ,$5 , $5)}'
ramdisk.gz: 11117611(dec) a9a42b(hex)
redboot.bin: 193336(dec) 2f338(hex)
zImage: 1930140(dec) 1d739c(hex)

Fatto!

Alla prox

[tags]bash[/tags]

,