Quante volte vi è capitato di volere rinominare più di un files contemporaneamente? Questo semplicissimo script in shell è facilissimo da usare e consente di fare questa operazione.

#!/bin/bash
# renames.sh
#Questo script sostituisce in una lista di file il carattere punto interrogativo con un underscore
for i in $( ls *htm* );
do
src=$i
tgt=$(echo $i | tr ? _ )
mv $src $tgt
done

Effettuate un chmod 755 rename.sh per potere utilizzare lo script. Lo script è davvero molto semplice e la parte centrale del programma consiste nel comando “tr” che è molto pratica e semplice da usare. Potete digitare tr –help per vedere le innumerevoli opzioni di questo comando. In questo caso viene utilizzato per sostituire il punto interrogativo con l’underscore.

Quindi nel codice riportato sopra tutti i files presenti nella directory di esecuzione dell script nel cui nome è presente la stringa “htm” subiranno la sostituzione del “?” con un “_”.

Ad esempio il file:

search.htm?marca=ferrari
diventa
search.htm_marca=ferrari
Questo script (o una versione migliorata e più avanzata) può essere utile ad esempio in abbinamento al comando wget che serve per effettuare il download di un sito web o di una parte di esso. Nel caso esposto sopra ad esempio viene “scaricato” una pagina che richiede un parametro marca=ferrari passato nella query string. Tuttavia nella maggior parte dei filesystem il carattere “?” è un carattere speciale e non può essere utilizzato, e quindi potrebbe essere necessario sostituirlo con una carattere differente.