[Linux-Biella] Maiuscolo e minuscolo
Paul TT
paultt a bilug.linux.it
Mer 4 Maggio 2005 18:46:14 CEST
Marco Barbera wrote:
>Esiste un comando da shell per poter convertire in minuscolo tutti i nomi di file di una directory e delle sue sottodirectory?
>
>
>
#!/bin/sh
# Nome del file: mvlc
if test -z "$1"
then
# Lo script č stato chiamato senza parametri
echo "Sintassi: $0 [-p] [-s] [-i] <nomefile>..."
echo "Rinomina i file rendendoli minuscoli e" \
"sostituendo gli spazi con underscore"
# Il carattere \ in fondo alla riga fa continuare il
# comando fino alla riga successiva
echo "-p: rendi minuscolo anche il path" \
"e non sono il nome del file"
echo "-s: non trasformare gli spazi in underscore"
echo "-i: chiedi conferma per sovrascrivere un file"
fi
pathCompleto=0
# Vale 1 se dobbiamo convertire tutto il path
# Vale 0 se dobbiamo convertire solo il nome del file
da='[A-Z ]'
# Lista dei caratteri da tradurre
a='[a-z_]'
# Lista dei caratteri che vogliamo ottenere
sovrascrivi=""
# Contiene -i se vogliamo la conferma prima di
# sovrascrivere
while test -n "$1"
# Mentre ci sono ancora argomenti sulla linea di comando...
do
fileMinuscolo=$1
case $1 in
-p) pathCompleto=1
# Dobbiamo convertire i path completi
;;
-s) da='[A-Z]'
a='[a-z]'
# Non dobbiamo pių tradurre lo spazio
;;
-i) sovrascrivi='-i'
# Dobbiamo chiedere conferma per sovrascrivere
;;
*)
# Se siamo qui l'argomento non era un'opzione ma un file
# da convertire
if test $pathCompleto = 1
then
fileMinuscolo=`echo "$1" | tr "$da" "$a"`
# Il comando tr permette di covertire un insieme di
# caratteri
else
nomeFile=`basename "$1"`
# Dato un path completo, basename restituisce l'ultima
# componente che nel nostro caso č il file da convertire
nomeDir=`dirname "$1"`
# Dirname restituisce il path esclusa l'ultima componente
fileMinuscolo=`echo "$nomeFile" | tr "$da" "$a"`
# Convertiamo solo il nome del file
fileMinuscolo="$nomeDir/$fileMinuscolo"
# Incolliamo la directory invariata e il nome del file
# convertito
fi
;;
esac
if test "$1" != "$fileMinuscolo"
then
mv $sovrascrivi "$1" "$fileMinuscolo"
# Rinominiamo se il nome del file originale e quello
# convertito sono diversi
fi
shift
# Spostiamo tutti i parametri: $2 diventa $1, $3 diventa $2
# e cosė via
done
# Fine dello script
--
Gli uomini non sospettano
quale terribile carico stiano
trasportando a valle.
public gpg key: gpg --keyserver pgp.mit.edu --recv-key 2E61343C
Maggiori informazioni sulla lista
Linux