A solução pode ser um one liner maneiro $ ls -1 00 - arquivo00 01 - arquivo01 02 - arquivo02 03 - arquivo03 04 - arquivo04 05 - arquivo05 06 - arquivo06 07 - arquivo07 08 - arquivo08 09 - arquivo09 10 - arquivo10
posso usar o sed assim: $ ls | sed -r "s/^[0-9 -]+(.*)/'&' '\1'/" '00 - arquivo00' 'arquivo00' '01 - arquivo01' 'arquivo01' '02 - arquivo02' 'arquivo02' '03 - arquivo03' 'arquivo03' '04 - arquivo04' 'arquivo04' '05 - arquivo05' 'arquivo05' '06 - arquivo06' 'arquivo06' '07 - arquivo07' 'arquivo07' '08 - arquivo08' 'arquivo08' '09 - arquivo09' 'arquivo09' '10 - arquivo10' 'arquivo10' Ai basta mandar pro xargs + mv $ ls | sed -r "s/^[0-9 -]+(.*)/'&' '\1'/" | xargs -L 1 mv -v `00 - arquivo00' -> `arquivo00' `01 - arquivo01' -> `arquivo01' `02 - arquivo02' -> `arquivo02' `03 - arquivo03' -> `arquivo03' `04 - arquivo04' -> `arquivo04' `05 - arquivo05' -> `arquivo05' `06 - arquivo06' -> `arquivo06' `07 - arquivo07' -> `arquivo07' `08 - arquivo08' -> `arquivo08' `09 - arquivo09' -> `arquivo09' `10 - arquivo10' -> `arquivo10' verificando o resultado $ ls arquivo00 arquivo01 arquivo02 arquivo03 arquivo04 arquivo05 arquivo06 arquivo07 arquivo08 arquivo09 arquivo10 Não custa tentar :) 2008/7/9 Guilherme Gall <[EMAIL PROTECTED]>: > 2008/7/9 Flamarion Jorge <[EMAIL PROTECTED]>: >> Bacana mas seria legal eu saber o que exatamente isso faz heheheheh > > O comando s do sed é igual a esse do rename. Uma boa literatura sobre > isso são os primeiros tópicos da página > http://www.grymoire.com/Unix/Sed.html. Destaque para o tópico que fala > sobre retrovisores ("Using \1 to keep part of the pattern"). No > comando que te passei o retrovisor era '$1' e não '\1', mas o > funcionamento é o mesmo. > > O resto é regex. Um bom ponto de partida sobre o assunto é > http://aurelio.net/er/ > >> O caminho que eu tava seguinto tava errado? > > No comando que você mandou na primeira mensagem, o que você estava > fazendo era filtrar a listagem de arquivos do diretório apenas. Para > renomear os arquivos sem o uso do rename, poderia ser usado o seguinte > loop sobre os arquivos do diretório: > > for i in *; do > novonome=$(sed -r 's/[a-z]* [0-9]{2} - (.*)/\1/' <<< $i); > mv "$i" "$novonome" > done > > Um ótimo material sobre shell para iniciantes pode ser encontrado em > http://twiki.softwarelivre.org/TWikiBar/WebHome > O tópico sobre o 'for' está em > http://twiki.softwarelivre.org/TWikiBar/TWikiBarPapo005 > > Bom, os links estão aí, agora é com você > > Espero ter ajudado, > > Guilherme Gall > -- Tiago B Peczenyj Linux User #405772 http://peczenyj.blogspot.com/ "what does not kill us makes us stronger"
