[ruby-it] File.basename("xxx", "x*x") l'asterisco funziona?
Antonio Flamini
iusimi a libero.it
Gio 25 Mar 2010 18:02:12 CET
Pietro Giorgianni wrote:
> Il 25 marzo 2010 13.24, Antonio Flamini <iusimi a libero.it> ha scritto:
>> @file � il percorso di un file in cui ho salvato il percorso della
>> cartella dove sono contenuti i file di backup. Lo so, � un po contorto,
>> infatti tutte le volte che ci ho rimesso le mani, e sono tantissime, ho
>> dovuto ricominciare tutto da capo, non ci capivo niente neanche io.
>> Per quanto riguarda il metodo gsub lo prover� per� siccome i numeri
>> dell'estensione cambiano...accetta l'asterisco?
>
> Dunque, @file contiene directory contenenti file che finiscono in
> .<numero>.dar, giusto?
>
> nomi = File.open('elenco') {|f| f.readlines}.map {|x|
> Dir.glob("#{x.strip}/*.dar").map {|y| File.basename(y).gsub
> /\(.\d+)?\.dar$/, '' }.uniq }.flatten
>
> (Scrivere tutto su un'unica riga � una cosa che non si fa, perch� alla
> fine non ci si capisce niente, per� non ho resistito alla tentazione).
>
> Ora nomi contiene un array dei nomi degli archivi; se ad esempio il
> file di nome @file contiene:
> /primo/path/
> /secondo/path
>
> e /primo/path/ contiene ecco.1.dar, ecco.2.dar, ecco.3.dar, prova.dar,
> mentre secondo/path contiene vedi.1.dar, vedi.3.dar, vedi.4.dar, nome
> varr�:['ecco', 'prova', 'vedi']
>
> Con File.basename tolgo il path, poi con gsub /\.\d+\.dar$/, '' tolgo
> .<numero>.dar e con uniq elimino le ripetizioni (perch� altrimenti
> troverei [ ecco', 'ecco', ecco', 'prova', 'vedi', 'vedi', 'vedi',
> 'vedi']).
>
> File.basename potresti eliminarlo e usare solo regular expression, tipo
> cos�:
nomi = File.open('elenco') {|f| f.readlines}.collect {|x|
> Dir.glob("#{x.strip}/*.dar").map {|y| y.gsub
> /.*\/(.*?)(\.\d+)?\.dar$/, $1 }.uniq }.flatten
>
> Spezzetta questa riga provando le varie parti per vedere l'effetto che
> fa.
>
>
> pietro
Scusami Pietro, la colpa è mia, mi sono espresso male; dovevo scrivere:
@file(@file=/home/utente/dir_backup/file.txt). Quando faccio un backup
devo salvare il percorso della cartella in cui salvo i file di backup
(cioè .n.dar) in un file, perché non sempre si fa il backup nella stessa
cartella, e per memorizzare questo percorso non ho trovato di meglio che
creare un file (file.txt di cui sopra) e scriverci dentro il percorso
della cartella contenente i file .n.dar; voglio dire che il file
"file.txt" contiene la scritta: /home/utente/dir_file_di_backup/, o
meglio ancora: /media/disk, perché l'altro percorso è quello di prova.
Tutto questo ai fini del ripristino.
Il cat serve per questo, salvare il percorso del nuovo backup in una
variabile per poi, con ls #{variabile_con_il_percorso}*.dar, avere una
lista dei file di backup.
Sapevo che il mio metodo era a dir poco aggrovigliato pero....come si
dice...nessuno nasce imparato.
Comunque credo che anche in ruby i dati si salvano nei file, o no?
Ormai è solo una curiosità: in File.basename("#{var}", ".*.dar")
l'asterisco non funzionerà mai?
Proverò il tuo codice, naturalmente cambiando quello che ce da cambiare
e posterò il risultato, domani spero. Se hai tempo di correggere le
linee che mi hai scritto potrò confrontarle con le mie.
In tutti i casi ti ringrazio per l'aiuto.
antonio
--
Posted via http://www.ruby-forum.com/.
More information about the Ml
mailing list