Anzitutto vediamo come creare una serie di file vuoti in bash, utilizzando il commando touch.
1 2 3 4 5 |
#!/bin/bash for n in $( seq 1 10 ); do touch "./elemento$n.txt" done |
Adesso proviamo a rinominare i file creati (cambiando l’estensione da *.txt a *.log), tenendo a mente i seguenti modificatori fondamentali:
#: sottrae dall’inizio della stringa (minimale)
%: sottrae dalla fine della stringa (minimale)
/ : sostituisce una sottostringa con un altra (solo la prima volta che viene incontrata)
1 2 3 4 5 |
#!/bin/bash for f in ./*.txt; do mv "$f" "${f/%txt/log}"; done |
Infine mettiamo insieme il tutto in un piccolo eseguibile che, una volta richiamato, permette di modificare l’estensione di tutti i file da ext1 a ext2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/bash rinomina() { for f in ./*.$1; do mv "$f" "${f/%$1/$2}" done } if [ $# -eq 2 ] rinomina $1 $2 else echo "Usage: $0 [ext1] [ext2]" fi |
Il programma in questione accetta come argomento le due estensioni da modificare, qualora non vengano forniti esattamente due argomenti segnala all’utente l’utilizzo corretto. Dopodiché passa in rassegna, nella sua cartella di appartenenza tutto i file con estensione ext1 e li modifica all’estensione ext2.