Newsgroup: it.comp.os.linux.development
Titolo: Nomi di file in minuscolo

Buongiorno a tutti,
se notate che la mia domanda non sia pertinente al NG, vi prego comunicarmi
a quale NG rivolgermi.
Io ho il sito web su un server apache con sistema operativo LINUX. Se vi
serve posso verificare la versione altrimenti sappiate che è nei server
della 
WWW.SEEWEB.COM
Ho un problema gigantesco.
Infatti sul mio sito gira un programma cgi che legge i file di database  i
quali li produco io in dos a casa.
Il sistema operatobvo MS-DOS mi produce i nomi di file  dei files in lettere
maiuscole.
Mentre il programma cgi installato nella directory cgi-bin li vuole in
lettere minuscole.
Pertanto mi tocca una volta installati i file cambiare il loro nome con ik
FTP.
Facile e soprattutto sbrigativo se non fosse che i file sono 150 circa e
spesso li cambio settimanalmente o comunque abbastanza spesso.
Qusti files sono riconoscibili per avere la lunghezza del nome di 3 lettere
+ 3 della desinenza.
le desinenze sono dbf fpt cdx.
Comunque nella cartella dove sono ci sono solo loro.
Come posso automatizzare il processo di cambio nome da maiuscolo in
minuscolo?
Grazie a tutti.
Paolo


Questo script brutale fa al caso tuo:
#!/bin/bash
for i in *; do
        j=$(echo $i |dd conv=lcase)
        mv $i $j
done
Va in crisi se alcuni nomi di file contengono spazi e trasforma in minuscolo
i nomi di tutti i files contenuti nella cartella in cui lo lanci.
Se il nome di un file e' gia' minuscolo, ti da un messaggio di errore e
prosegue con il prossimo.

 wrote in message
news:mfsp99...@mail.minerbio.vbi...



Questo e' l'equivalente di un file .bat in msdos.
Non esiste una estensione predefinita per questo tipo di file negli xnix,
pero' devono avere il permesso di esecuzione: in questo modo diventa un
comando a tutti gli effetti, simile a ls, cd, ecc.
Facciamo finta di chiamarlo "minuscolo", senza nessun tipo di estensione.
Per settare il permesso di esecuzione si utilizza il comando
chmod 755 minuscolo
Per lanciarlo si scrive:
./minuscolo
(pero' anche la soluzione che hai proposto tu va bene)
I comandi si danno dalla shell (l'equivalente del prompt dei comandi di
msdos)
Per accedere alla shell, potresti usare ad esempio telnet o fare il login
dalla console.
Importante:
la scritta "#!/bin/bash" deve essere obbligatoriamente nella prima riga
I files di testo degli xnix e di msdos sono diversi:
in msdos il carattere di ritorno a capo e' CR LF
negli xnix il carattere di ritorno a capo e' CR
In questo file il carattere di ritorno a capo deve essere CR, non funziona
con CR LF
Cmq se fai il trasferimento via ftp in modalita' ascii, la conversione e'
automatica.

 minuscolo?
Oltre a quello che ti hanno gia` dato, questa e` la mia
raccolta di metodi:
1)
for i in *; do mv -i $i `echo $i | tr '[A-Z]' '[a-z]'`; done
2)
usa la shell zsh, o mettila in uno script (#! /bin/zsh)
for i in *[A-Z]*; mv $i $i:l
3)
$ mkdir vuota
$ cd vuota/
$ touch UNO DUE TRE
$ ls
DUE  TRE  UNO
$ perl -e 'for (<*>) { rename $_, lc $_ }' # questo è il comando
$ ls
due  tre  uno
4)
perl -e 'use File::Find; find(sub{rename $_, lc $_ if -f}, ".")'
(questo dovrebbe funzionare ricorsivamente nelle sub-dir)
Sicuramente ce ne sono degli altri.
ciao, andrea