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