Newsgroup: it.comp.os.linux.iniziare
Titolo: aiuto per un script

Vorrei rinominare una serie di file secondo lo schema seguente:
--8<---------------cut here---------------start------------->8---
The.Lone.Gunmen.s01e01.sub.itasa.srt -> The Lone Gunmen 1x01 - Pilot.srt                          
The.Lone.Gunmen.s01e02.sub.itasa.srt -> The Lone Gunmen 1x02 - Bond, Jimmy Bond.srt               
The.Lone.Gunmen.s01e03.sub.itasa.srt -> The Lone Gunmen 1x03 - Eine Kleine Frohike.srt            
The.Lone.Gunmen.s01e04.sub.itasa.srt -> The Lone Gunmen 1x04 - Like Water for Octane.srt          
The.Lone.Gunmen.s01e05.sub.itasa.srt -> The Lone Gunmen 1x05 - Three Men and a Smoking Diaper.srt 
The.Lone.Gunmen.s01e06.sub.itasa.srt -> The Lone Gunmen 1x06 - Madam, I'm Adam.srt                
The.Lone.Gunmen.s01e07.sub.itasa.srt -> The Lone Gunmen 1x07 - Planet of the Frohikes.srt         
The.Lone.Gunmen.s01e08.sub.itasa.srt -> The Lone Gunmen 1x08 - Maximum Byers.srt                  
The.Lone.Gunmen.s01e09.sub.itasa.srt -> The Lone Gunmen 1x09 -  Diagnosis Jimmy.srt               
The.Lone.Gunmen.s01e10.sub.itasa.srt -> The Lone Gunmen 1x10 - Tango De Los Pistoleros.srt        
The.Lone.Gunmen.s01e11.sub.itasa.srt -> The Lone Gunmen 1x11 - The Lying Game.srt                 
The.Lone.Gunmen.s01e12.sub.itasa.srt -> The Lone Gunmen 1x12 - All About Yves.srt                 
The.Lone.Gunmen.s01e13.sub.itasa.srt -> The Lone Gunmen 1x13 - The Cap'n Toby Show.srt            
--8<---------------cut here---------------end--------------->8---
Ho pensato ad una cosa del genere:
for i in `seq -w 1 13`; do mv The.Lone.Gunmen.s01e$i.sub.itasa.srt
/file$i.srt/ ; done
Il nome di arrivo viene ricavato da una serie di file avi. L'idea è di
prendere il nome del file e sostituire la stringa avi con srt.
Ho un problema con la seconda operazione. Ho pasticciato un po' con
basename, ma ho qualche problema con i soliti spazi.
Voi come fareste?
Grazie in anticipo.
-- 
                     Dona i tuoi cicli di clock alla ricerca!
 
http://boinc.berkeley.edu/
                          --------------------
Quando il carattere di un uomo ti sembra indecifrabile, guarda i suoi amici.
		-- Proverbio giapponese

 Grazie in anticipo.

> Voi come fareste?
questo dovrebbe andare
i=1
for file in *.avi
do
	newname=${file/"avi"/"srt"}
	if [ $i -lt "10" ];then
		mv The.Lone.Gunmen.s01e0$i.sub.itasa.srt "$newname"
	else
		mv The.Lone.Gunmen.s01e$i.sub.itasa.srt "$newname"
	fi	
	let i=$i+1
done

> 	newname=${file/"avi"/"srt"}
errore, se la stringa avi è presente prima della fine no funziona,
sostituisci con:



ops, m'è scappato un invio :)
newname=${file/%"avi"/"srt"}

 newname=${file/%"avi"/"srt"}
Le virgolette non ci devono essere

Redwiz scrisse:

Qui c'è un bug grosso come un elefante.
Questo codice presuppone che i file siano ordinati.
Invece potrebbe accadere che venga processato prima il
decimo file, poi il sesto e per ultimo il quinto.
E poi cosa accade se è presente un file con nome: 
'Le avventure di pinocchio.avi'?
Oppure se vi sono 13 file .srt e 15 file .avi?
Questo è uno dei rari casi dove puè essere utile 
una cosa del tipo:
ls The\ Lone\ Gunman*.avi |
  while read -r name
    ...
  done
Ma la soluzione migliore è estrarre il numero di 
sequenza dal nome del file .avi ed usare un 
semplice ciclo for
la soluzione a domani

   done
qui hai ragione
 

 'Le avventure di pinocchio.avi'?
Per questo io costruivo lo script a partire da un pattern ben
definito. Continuo a pensare che fosse una buona idea.
-- 
                     Dona i tuoi cicli di clock alla ricerca!
 
http://boinc.berkeley.edu/
                          --------------------
        Una volta nel gregge e' inutile che abbai: scondinzola.
        		-- Cechov, "Quaderni"

 	newname=${file/"avi"/"srt"}
Cos'è? Una sostituzione in fase di assegnazione del valore ad una
variabile. 
-- 
                     Dona i tuoi cicli di clock alla ricerca!
 
http://boinc.berkeley.edu/
                          --------------------
                Cosa invecchia presto?  La gratitudine.
                		-- Aristotele

 qui hai ragione
E quindi?
-- 
                     Dona i tuoi cicli di clock alla ricerca!
 
http://boinc.berkeley.edu/
                          --------------------
          Prima Legge del Zuse della Chimica Alimentare:
          	Il rapporto stechiometrico pane/nutella e' di 1:3.
          		-- Andrea `Zuse' Balestrero

 variabile.
sembra di si, non ti piace? (a parte che devi usare la versione col %)

Redwiz scrisse:

... e senza virgolette

 definito. Continuo a pensare che fosse una buona idea.
Invece a mio avviso tale approccio non paga però il problema 
non è di quelli che meritano molta attenzione, quindi va 
bene lo stesso.
Ti sei perso in un bicchiere d'acqua, Redwiz ha dato un
buon suggerimento, usare l'espansione dei parametri, però 
attento alle virgolette.

 writes:

Chiedevo, la mia conoscenza di bash è limitata. Questi miei esperimenti
sono esplorativi.
-- 
                     Dona i tuoi cicli di clock alla ricerca!
 
http://boinc.berkeley.edu/
                          --------------------
Non e' vero che Unix non e' user-friendly.  Unix *e'* user-friendly, e'
amichevole con l'utente.  Solo che ha un concetto molto restrittivo di
utente amico.

 sono esplorativi.
http://www.pluto.it/files/ildp/guide/abs/string-manipulation.html
paragrafo "sostituzione di sottostringa"