Fala aí Cristiano, Veja se funcionaria:
ls dirA | xargs touch -r dirB/* []'s Gunter Em 7 de abril de 2010 11:46, Cristiano <[email protected]> escreveu: > > > --- Em [email protected] <shell-script%40yahoogrupos.com.br>, > "Cristiano" <boxferr...@...> escreveu > > > > > Ilustres, bom dia. > > > > Tenho 2 diretórios com o seguinte conteúdo. > > > > #ls /dirA | head -n 4 > > 1.txt > > 2.txt > > 3.txt > > 4.txt > > > > #ls /dirB | head -n 4 > > a.txt > > b.txt > > c.txt > > d.txt > > > > Ambas as listas de arquivos SEMPRE** terão a mesma quantidade de arquivos > (limitado pelo HEAD), mas não há um padrão para os nomes em ambos os > diretórios. Ou seja, os nomes dos arquivos **SEMPRE** serão variáveis e > aleatórios, em ambas as listas. > > > > Eu preciso fazer com que os arquivos da lista 2 (dirB) fiquem com o mesmo > timestamp dos arquivos da lista 1 (dirA). > > > > Algo tipo: > > > > #touch -r /dirA/1.txt /dirB/a.txt > > #touch -r /dirA/2.txt /dirB/b.txt > > #touch -r /dirA/3.txt /dirB/c.txt > > #touch -r /dirA/4.txt /dirB/d.txt > > > > A relação sempre será esta: o rótulo do primeiro arquivo da lista B, será > referenciado pelo primeiro arquivo da lista A, e assim por diante. > > > > Pensei em usar o for para criar um laço e processar as listas, mas eu > precisaria de um for para cada lista e que ambos fossem executados em > paralelo. > > > > Então, como eu poderia fazer para que ambas as listas fossem processadas > em paralelo para que eu pudesse executar o touch conforme descrito acima? > > > > Abraço > > > > HÁ! Eureka! > > Auto-resposta (ou seria Autorresposta?): É só pensar um pouco fora do > quadrado: Process Substitution (I LOVE BASH!) > > Usando process substitution com o paste eu consigo concatenar as listas em > colunas: > > # paste <(ls 127* | head -n 10) <(ls /tmp/*DFU* | head -n 10) > 1270646009_base.fdb /tmp/X_FERRARI-20100302_MOVIM_DFU.txt > 1270646010_base.fdb /tmp/X_FERRARI-20100303_MOVIM_DFU.txt > 1270646011_base.fdb /tmp/X_FERRARI-20100304_MOVIM_DFU.txt > 1270646012_base.fdb /tmp/X_FERRARI-20100305_MOVIM_DFU.txt > 1270646013_base.fdb /tmp/X_FERRARI-20100306_MOVIM_DFU.txt > 1270646014_base.fdb /tmp/X_FERRARI-20100307_MOVIM_DFU.txt > 1270646015_base.fdb /tmp/X_FERRARI-20100310_MOVIM_DFU.txt > 1270646016_base.fdb /tmp/X_FERRARI-20100311_MOVIM_DFU.txt > 1270646017_base.fdb /tmp/X_FERRARI-20100312_MOVIM_DFU.txt > 1270646018_base.fdb /tmp/X_FERRARI-20100313_MOVIM_DFU.txt > > Então ficou fácil (em uma linha): > > #while read TO FROM ; do echo "touch -r ${FROM} ${TO}" ; done < <( paste > <(ls 127* | head -n 10) <(ls /tmp/*DFU* | head -n 10)) > > touch -r /tmp/X_FERRARI-20100302_MOVIM_DFU.txt 1270646009_base.fdb > touch -r /tmp/X_FERRARI-20100303_MOVIM_DFU.txt 1270646010_base.fdb > touch -r /tmp/X_FERRARI-20100304_MOVIM_DFU.txt 1270646011_base.fdb > touch -r /tmp/X_FERRARI-20100305_MOVIM_DFU.txt 1270646012_base.fdb > touch -r /tmp/X_FERRARI-20100306_MOVIM_DFU.txt 1270646013_base.fdb > touch -r /tmp/X_FERRARI-20100307_MOVIM_DFU.txt 1270646014_base.fdb > touch -r /tmp/X_FERRARI-20100310_MOVIM_DFU.txt 1270646015_base.fdb > touch -r /tmp/X_FERRARI-20100311_MOVIM_DFU.txt 1270646016_base.fdb > touch -r /tmp/X_FERRARI-20100312_MOVIM_DFU.txt 1270646017_base.fdb > touch -r /tmp/X_FERRARI-20100313_MOVIM_DFU.txt 1270646018_base.fdb > > Alguém pensou em algo diferente? ("toc-toc" Mestre Júlio & Cia)... > > > [As partes desta mensagem que não continham texto foram removidas] ------------------------------------ --------------------------------------------------------------------- Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. --------------------------------------------------------------------- Sair da lista: [email protected] --------------------------------------------------------------------- Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net --------------------------------------------------------------------- Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: [email protected] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
