Awk..trallalla’..sed..trallalla’..

Le giornate si risollevano quando riesci a fare qualcosa che (prima!) avresti fatto sprecando molto piu’ tempo..ed ora invece risolvi con un solo comando.

Konsole

Nel mio caso si trattava di rinominare tutti i files mp3 di una cartella, rimuovendo il nome dell’artista e dell’album e lasciando il numero della traccia e il nome della song. Una volta posizionato nella cartella mi e’ bastato dare questo semplice unico comando da shell..

ls | awk ‘{ print “mv \”"$0″\” \”"$0″\”"}’ | sed s/”Mike Stern – Is What It Is – “//2 | sh

Vi spiego cosa fa..

ls |

Elenca tutti i files della cartella. Con il | (pipe) faccio in modo che lo standard out di ls sia passato al comando successivo anziche’ stampato sul terminale.

awk ‘{ print “mv \”"$0″\” \”"$0″\”"}’ |

Awk e’ un valido programma (con tanto di linguaggio di programmazione) che serve per modificare stringhe di testo. In questo caso gli ho chiesto: “Hey, per ogni riga che ti arriva (dal comando ls in questo caso), scrivi mv “<riga>” “<riga>”.Quindi se una song si chiamasse “Mike Stern – Is What It Is – 01 – Swunk.mp3″, awk scriverebbemv “Mike Stern – Is What It Is – 01 – Swunk.mp3″ “Mike Stern – Is What It Is – 01 – Swunk.mp3″“. Con il solito pipe trasferisco il tutto al prossimo comando.

sed s/”Mike Stern – Is What It Is – “//2 |

Sed e’ un altro valido programma per modificare stringhe di testo. La sintassi usata in questo caso ha fatto si’ che per ogni riga passata nello standard in di sed (tramite il pipe lo standard in di sed corrisponde allo standard out di awk) il programma sostituisse (s/) la stringa “Mike Stern – Is What It Is – “ con…una stringa vuota (//), ma solo alla seconda occorrenza (2) di questa.
Quindi ad esempio “mv “Mike Stern – Is What It Is – 01 – Swunk.mp3″ “Mike Stern – Is What It Is – 01 – Swunk.mp3″” verrebbe cambiato in “mv “Mike Stern – Is What It Is – 01 – Swunk.mp3″ “01 – Swunk.mp3″“.
Al solito notare il pipe subito dopo il comando.

sh

Semplicemente a questo punto tutte le stringhe vengono eseguite nella shell.

Ecco il risultato come e’ apparso sul mio terminale..

francesco@notebook:~/Musica/Mike Stern – Is What It Is$ ls
Mike Stern – Is What It Is – 01 – Swunk.mp3
Mike Stern – Is What It Is – 06 – Wherever You Are.mp3
Mike Stern – Is What It Is – 02 – A Little Luck.mp3
Mike Stern – Is What It Is – 07 – Ha Ha Hotel.mp3
Mike Stern – Is What It Is – 03 – What I Meant To Say.mp3
Mike Stern – Is What It Is – 08 – Signs.mp3
Mike Stern – Is What It Is – 04 – Showbiz.mp3
Mike Stern – Is What It Is – 09 – 55 Dive.mp3
Mike Stern – Is What It Is – 05 – Believe It.mp3
francesco@notebook:~/Musica/Mike Stern – Is What It Is$ ls | awk ‘{ print “mv \”"$0″\” \”"$0″\”"}’ | sed s/”Mike Stern – Is What It Is – “//2 | sh
francesco@notebook:~/Musica/Mike Stern – Is What It Is$ ls
01 – Swunk.mp3
03 – What I Meant To Say.mp3
05 – Believe It.mp3
07 – Ha Ha Hotel.mp3
09 – 55 Dive.mp3
02 – A Little Luck.mp3
04 – Showbiz.mp3
06 – Wherever You Are.mp3
08 – Signs.mp3

..e adesso che faccio tutto il resto del pomeriggio?

Lascia un commento