[ruby-it] File.basename("xxx", "x*x") l'asterisco funziona?
Antonio Flamini
iusimi a libero.it
Sab 27 Mar 2010 11:44:06 CET
Pietro Giorgianni wrote:
> Il 25 marzo 2010 18.02, Antonio Flamini <iusimi a libero.it> ha scritto:
>> 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.
>
> Invece del cat puoi fare:
> File.open(nomedelfile, 'w') {|f| f.write percorso }
> Per non usare ls c'� Dir.glob, come hai visto.
>
>> Ormai � solo una curiosit�: in File.basename("#{var}", ".*.dar")
>> l'asterisco non funzioner� mai?
>
> Mai dire mai, ma attualmente non funziona e, a meno che qualcuno non
> decida di implementarlo cos�, continuer� a non funzionare anche in
> futuro.
>
>> Se hai tempo di correggere le linee che mi hai scritto
>> potr� confrontarle con le mie.
>
> Non mi sembra ci sia niente da correggere...
>
>
> pietro
nomi = File.open('elenco') {|f| f.readlines}.map {|x|
> Dir.glob("#{x.strip}/*.dar").map {|y| File.basename(y).gsub
> /\(.\d+)?\.dar$/, '' }.uniq }.flatten
Immagino che per 'elenco' tu intenda un file contenente la lista dei
file di backup, però non è cosi: il file che devo leggere contiene il
percorso della cartella contenente gli stessi file di backup.
Comunque ho provato le linee che mi hai scritto (due giorni!), però mi
da un errore di compilazione proprio su gsub; allora ho fatto delle
modifiche, anche perché da quello che ho letto il pattern andrebbe
racchiuso tra "()" e "[]", questo è quello che ne è venuto fuori:
path_file="/home/user/dar_file/file_backup.txt"
var_path=File.read path_file => /media/disk/
darfile_list=Dir.glob("#{var_path}*.dar") => ["data.1.dar", data.2.dar",
etc]
darfile_list.each do |y| File.basename(y).gsub(/[\(.\d+)?\.dar$]/, "")
Come vedi invece di usare File.open ho usato File.read, e ora so che al
posto di ls posso usare Dir.glob (grazie!). L'ultima riga, gsub, ora non
mi da nessun errore però mi restituisce i file di backup non solo con
l'estensione ma anche con il percorso, mentre che con File.basename
avevo come risultato il basename e basta.
Avevo pensato che invece di avere una lista infinita di file di bakup
avrei potuto conformarmi con il tenere solamente un numero limitato di
file, es. 5, e salvarli in una variabile con:
darfile_list.each do |x|
case x
when "data.1.dar"
var[0]=x
when
etc
o qualcosa del genere. Però credo di averci provato ma senza risultato.
Per cuanto riguarda le linee che mi hai scritto, e anche quelle che ho
modificato: dove ho sbagliato?
antonio
--
Posted via http://www.ruby-forum.com/.
More information about the Ml
mailing list