Il 28 ottobre 2011 09:33, Michele Bert <micbert75@xxxxxxxxx> ha scritto: > for file in *_torre_*.txt ; do mv $file \"`echo $file |sed > "s/_torre_/ torre /"`\"; done > Possibilità: for file in *_torre_*.txt ; do ofile=`echo $file |sed "s/_torre_/ torre /"`; mv $file "$ofile";done Piccola spiegazione. Alla prima iterazione, $file è 'input_torre_00_03.txt' - echo $file #scrive il nome del file (input_torre_00_03.txt) nella pipe - sed "s/_torre_/ torre /" #sostituisce la prima sottostringa con la seconda (il risultato è 'input torre 00_03.txt') - il risultato viene salvato nella variabile $ofile - mv $file "$ofile" #esegue il comando mv, con due argomenti: la stringa in $file e quella in $ofile Qual'è la differenza rispetto alla prima versione? Mentre nel primo caso le doppie apici " fanno parte della stringa che contiene il nome del file, e come tali vengono passate al comando mv, nel secondo vengono interpretate dalla shell, ad indentificare il fatto che la stringa in $ofile va passata coem argomento unico. In altre parole, nel primo caso, ad ogni iterazione la shell doveva interpretare un comando del tipo: mv input_torre_xx_xx.txt \"input torre xx_xx.txt\" e quindi quindi chiama il comando mv con gli argomenti: - input_torre_xx_xx.txt - "input - torre - xx_xx.txt" Infatti l'errore che dà è: mv: l'obiettivo "xx_xx.txt\"" non è una directory Conferme? Smentite? Michele -- Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx