Já que a brincadeira é fazer one liners, veja se esse funciona: paste <(ls *02*) <(ls *02* | sed 's/02/03/') | xargs -tL1 mv
o -t em -tL1 é só para mostrar o que ele está fazendo. Se for trocado por-p, ficará interativo e pedirá confirmação antes de mover. Quem não entendeu, leia aqui<https://wiki.softwarelivre.org/TWikiBar/TWikiBarPapo011#Substitui_o_de_processo>ou aqui<https://twiki.softwarelivre.org/TWikiBar/TWikiBarBirinaite#Passando_par_metros_com_xargs>. Está em português e a leitura é fácil. -- Abração, Julio *Cursos de Shell e Zenity nos finais de semana: - Em SP ligue (11) 2125-4747; - Em DF ligue (61) 3223-3000; - No RJ brevemente; - Turmas fechadas em outras cidades ligue (21) 8112-9988 * 2009/2/11 Ivan lopes <[email protected]> > * problema: > dado os arquivos, substituir o valor 02 por 03. > > $ ls *.txt > xml-xmllint-sample-validate-02-00.txt > xml-xmllint-sample-validate-02-note.xml.txt > xml-xmllint-sample-validate-02-note.dtd.txt > xml-xmllint-sample-validate-02-note.xsd.txt > > * forma normal de resolver o problema: > $ mv xml-xmllint-sample-validate-02-00.txt > xml-xmllint-sample-validate-03-00.txt > $ mv xml-xmllint-sample-validate-02-note.xml.txt > xml-xmllint-sample-validate-03-note.xml.txt > $ mv xml-xmllint-sample-validate-02-note.dtd.txt > xml-xmllint-sample-validate-03-note.dtd.txt > $ mv xml-xmllint-sample-validate-02-note.xsd.txt > xml-xmllint-sample-validate-03-note.xsd.txt > > * forma ninja! ou Julhesca! ==> ( adjetivo relativo ao cara muito bom em > Shell ) > > hum! vejamos, > - dupliquei a entrada : 'p' > - substitui `02' por `03' : 's/02/03/' > - adicionei mv na frente da linha :'s/^/mv /' > - removi os fins de linha :'N;s/\n/ /' > > moleza! sed nele! > $ ls *.txt| sed 'p; s/02/03/' | sed 'N;s/\n/ /; s/^/mv /' > mv xml-xmllint-sample-validate-02-00.txt > xml-xmllint-sample-validate-03-00.txt > mv xml-xmllint-sample-validate-02-note.dtd.txt > xml-xmllint-sample-validate-03-note.dtd.txt > mv xml-xmllint-sample-validate-02-note.xml.txt > xml-xmllint-sample-validate-03-note.xml.txt > mv xml-xmllint-sample-validate-02-note.xsd.txt > xml-xmllint-sample-validate-03-note.xsd.txt > > para que um texto vire uma acao! `sh' nele! > > $ ls *.txt| sed 'p; s/02/03/' | sed 'N;s/\n/ /; s/^/mv /'| sh > > !!-Atencao-!! > o bacana desse exemplo, eh que vc pode colocar uma regex no lugar do > `02' ... entao qualquer tipo de substituicao pode acontecer. > > ***transformando essa dica em algo util! <<--- achou que eu tinha > esquecido! > $ cat rename.sh > #!/bin/bash > > REGEX=$1 > _STR_=$2 > # ---------------------------------------------------------- > cat -| > sed "p; s/$REGEX/$_STR_/" | sed 'N;s/\n/ /; s/^/mv /' > > # ---------------------------------------------------------- > exit 0 > > Uso: > $ ls *.txt| ./rename.sh java c++ > mv xml-xmllint-sample-java-03-00.txt xml-xmllint-sample-c++-03-00.txt > mv xml-xmllint-sample-java-03-note.dtd.txt > xml-xmllint-sample-c++-03-note.dtd.txt > mv xml-xmllint-sample-java-03-note.xml.txt > xml-xmllint-sample-c++-03-note.xml.txt > mv xml-xmllint-sample-java-03-note.xsd.txt > xml-xmllint-sample-c++-03-note.xsd.txt > > []'s > Ivan! :) > > [As partes desta mensagem que não continham texto foram removidas]
