Maledetta ricorsione

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Maledetta ricorsione

leo-19
Chi fra voi ha mai avuto la necessita' di rinominare ricorsivamente
un'intera directory?. Sembrerebbe pochi, dato che la documentazione al
riguardo, se c'e', non si trova.

Vi sembra una cosa banale?
beh, provate a risolvere questo problema:

rinominare tutti i file e tutte le sottodirectory di una cartella
trasformando da maiuscolo a minuscolo tutto quanto. Ovviamente
utlizzando uno script bash (niente perl e niente c), e prevedendo nomi
di file o cartelle che contengano spazi.


PS
chi ci riuscira' avra' automaticamente diritto al milione di dollari,
come previsto dalla fondazione James Randi.

--
ubuntu-it mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-it
Reply | Threaded
Open this post in threaded view
|

Re: Maledetta ricorsione

leo-19
Mi rispondo da solo,
ecco cosa sono riuscito a produrre:

----------------------------------------------------------------------------------------------------------------------------------------

#!/bin/bash

# creo un file bash chiamato MV
echo "#!/bin/bash" >> ../MV
echo >> ../MV

# cerco tutti i file o dir e cambio gli spazi nel nome con un simbolo
riconoscibile "@"
for BASEFILE in $(find . -name "*" -print | sort -r | tr " " "@"); do

        # creo una variabile con il nome del file o della dir,
        FILE=`basename $BASEFILE`

        # una con il percorso,
        BASE=`dirname $BASEFILE`

        # ed una con l'unione delle due
        BASE_E_FILE=${BASE}/${FILE}

        # metto a video cio' che verra' eseguito
        echo "mv $(echo \"$BASEFILE\" | tr "@" " ") $(echo \"$BASE | tr "@" "
")/$(echo $FILE\" | tr A-Z a-z | tr "@" "_")"

        # elimino la dir "."
        if [ $BASE_E_FILE !=  "./." ]; then

                # creo il comando per rinominare e lo scrivo dentro il file bash MV
                echo "mv $(echo \"$BASEFILE\" | tr "_" " ") $(echo \"$BASE | tr "_"
" ")/$(echo $FILE\" | tr A-Z a-z)" >> ../MV;

        fi

done

# eseguo MV poi lo cancello
chmod 755 ../MV
../MV
rm ../MV

----------------------------------------------------------------------------------------------------------------------------------------

Se qualcuno a qualche suggerimento e' molto gradito.
Saluti

--
ubuntu-it mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-it
Reply | Threaded
Open this post in threaded view
|

Re: Maledetta ricorsione

ozanam
In reply to this post by leo-19
Il giorno sab, 21/01/2006 alle 10.53 +0100, leo ha scritto:

> Chi fra voi ha mai avuto la necessita' di rinominare ricorsivamente
> un'intera directory?. Sembrerebbe pochi, dato che la documentazione al
> riguardo, se c'e', non si trova.
>
> Vi sembra una cosa banale?
> beh, provate a risolvere questo problema:
>
> rinominare tutti i file e tutte le sottodirectory di una cartella
> trasformando da maiuscolo a minuscolo tutto quanto. Ovviamente
> utlizzando uno script bash (niente perl e niente c), e prevedendo nomi
> di file o cartelle che contengano spazi.
>
>
> PS
> chi ci riuscira' avra' automaticamente diritto al milione di dollari,
> come previsto dalla fondazione James Randi.
>
for i in *; do mv $i $(echo $i | tr [:upper:] [:lower:]); done    da
maiuscolo a minuscolo
for i in *; do mv $i $(echo $i | tr [:lower:] [:upper:]); done    da
minuscolo a maiuscolo
--
Ozanam
Ubuntu user
http://web.tiscali.it/ozanam



--
ubuntu-it mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-it