Rendere uno script ricorsivo
Inviato: gio 15 lug 2010, 14:19
Buon giorno a tutti. Sono nuovo del forum e piuttosto nuovo di Linux.
Mi chiedevo come si può rendere uno script (scritto da me) ricursivo nelle sottodierctory. Nel particolare, il mio comando sostituisce alcuni caratteri (ad esempio gli spazi) nei nomi dei file e delle directory presenti nella directory in cui ci si trova. Vorrei però che all'occorrenza funzionasse anche nei file e nelle directory presenti nelle sottodirectory.
Un'altra cosa: e per farlo funzionare in una directory o su un file espresso come argomento del comando?
Grazie per le risposte, copio il codice:
Mi chiedevo come si può rendere uno script (scritto da me) ricursivo nelle sottodierctory. Nel particolare, il mio comando sostituisce alcuni caratteri (ad esempio gli spazi) nei nomi dei file e delle directory presenti nella directory in cui ci si trova. Vorrei però che all'occorrenza funzionasse anche nei file e nelle directory presenti nelle sottodirectory.
Un'altra cosa: e per farlo funzionare in una directory o su un file espresso come argomento del comando?
Grazie per le risposte, copio il codice:
Codice: Seleziona tutto
#!/bin/sh
#controllo dei parametri passati dalla riga di comando
if [$1 = ]
then
echo -n 'Would you like to cancel spaces in all files of this directory? [y/n] '
read answer_a
str1="$answer_a"
if [ $str1 = "y" ]
then
REPLACE_CHAR="\ "
#eliminazione dei file i cui nomi contengono spazi
for file in ls *
do
if [ "$file" = "ls" ]
then
str1="$file" #operazione inutile, non so dirgli di non fare nulla; qui non deve fare niente
else
str2=`echo $file | sed s/\ /_/g` #il comando sed sostituisce nella stringa s il terzo parametro al posto del secondo
if [ "$file" = $str2 ]
then
niente=$file
#echo $file #stampa i nomi dei files non modificati
else
echo $file ">>>>>>" $str2 #stampa i nomi dei files modificandi e modificati
mv "$file" $str2 #cambia il nome del file con quello contenuto in $str
fi
fi
done
REPLACE_CHAR="_-_"
#eliminazione dei file i cui nomi contengono spazi
for file in ls *
do
if [ "$file" = "ls" ]
then
str3="$file" #operazione inutile, non so dirgli di non fare nulla; qui non deve fare niente
else
str4=`echo $file | sed s/_-_/_/g` #il comando sed sostituisce nella stringa s il terzo parametro al posto del secondo
if [ "$file" = $str4 ]
then
niente=$file #operazione inutile, ma qui non deve fare niente
else
echo $file " >>>>>> " $str4 #stampa i nomi dei files modificandi e modificati
mv "$file" $str4 #cambia il nome del file con quello contenuto in $str
fi
fi
done
exit
fi
exit
fi
exit