|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Feb 2003
Città: Formia
Messaggi: 1545
|
script per linux
Ciao a tutti dovrei fare questo script
Ho diverse cartelle e dovrei convertirle tutti in minuscoli sia le sue figlie cartelle che i file MI poete dare un mano? Lo script deve girare su linux |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Feb 2003
Città: Formia
Messaggi: 1545
|
1 #!/bin/bash
2 for i in $(ls); do 3 oldname="$i" 4 newname=$(echo "$oldname" | tr 'A-Z' 'a-z') 5 if [ "$oldname" != "$newname" ] 6 then 7 mv -i "$oldname" "$newname" 8 fi 9 done per ora ho trovato questo script ma non è ricorsivo |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Sostituisci $(ls) con $(find) e il gioco è fatto.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Feb 2003
Città: Formia
Messaggi: 1545
|
non mi funziona
![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Feb 2003
Città: Formia
Messaggi: 1545
|
per ora sto risolvendo in questo modo
lo lancio n volte quando è profondo albero, |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Credo che possa funzionare (non ho provato).
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Codice:
find /path/alla/directory/ -exec perl -e 'for (@ARGV) { rename $_, lc ; }' {} \; |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Feb 2003
Città: Formia
Messaggi: 1545
|
ho fatto il segeunte test
mkdir -p mkdir -p /home/APP/LLL/JJJ/JJJJ/JJJ/GGG poi find /home/APP/LLL -exec perl -e 'for (@ARGV) { rename $_, lc ; }' {} \; ma non mi funge non mi da errore però |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Feb 2003
Città: Formia
Messaggi: 1545
|
ops
ho fatto il segeunte test mkdir -p /home/APP/LLL/JJJ/JJJJ/JJJ/GGG poi find /home/APP/LLL -exec perl -e 'for (@ARGV) { rename $_, lc ; }' {} \; ma non mi funge non mi da errore però |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
hai ragione non funziona se il path che passi a "find" contiene lettere maiuscole, quando ho tempo te lo correggo.
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Feb 2003
Città: Formia
Messaggi: 1545
|
non ti preoccupare
grazie lo stesso. |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
ci ho pensato un attimo, rinominare sia file che directory richiede un po' più di codice perchè cambiando il nome delle directory la lista che ottieni all'inizio con il comando "find" non è più valida non appena cambi il nome di una directory (perchè non riesci più a referenziare correttamente i file contenuti, che hanno ancora il path "vecchio", con gli uppercase).
soluzione 1-> ti accontenti di rinominare i file, mettendo un "-type f" tra i parametri del find che richiama il codice perl soluzione 2-> scrivi un programmino che NON crea la lista di file e directory all'inizio (per il problema che ho spiegato prima), ma analizza una directory per volta ricorsivamente e in ognuna rinomina i file prima della directory "madre". Ciao |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Feb 2003
Città: Formia
Messaggi: 1545
|
grazie sempre gentilissimo era un cosa che dovevo fare a volo perchè mi hanno mandato un copia di bk masterizzata male.
Come ho detto prima lancio lo script n volte quando è profondo albero |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:45.