shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Re: 2 laços em paralelo (seria isso?)


From: Julio C. Neves
Subject: Re: [shell-script] Re: 2 laços em paralelo (seria isso?)
Date: Wed, 7 Apr 2010 13:41:07 -0300

Algo semelhante, porém one-liner: ;)

paste -d ' ' <(ls 127* | head -n 10) <(ls /tmp/*DFU* | head -n 10) | xargs
-L1 touch -r

OBS: Na próxima 2a. feira começo um curso de shell em Floripa. Apareçam nem
que seja para um chope (com ostras).

Abraços,
Julio
Cursos de Shell e Zenity em 2 fins de semana?
- Floripa turma Shell 12/04 http://www.seventreinamentos.com.br;
- DF turma de Shell em 17/04 - ligue (61) 3223-3000;
- Aracaju turma de Shell em 12/05 - address@hidden;
- RJ turma de Shell em 14/06 - ligue (21)2210-6061;
- Turmas fechadas em outras cidades ligue (21)  8112-9988.


Em 7 de abril de 2010 11:46, Cristiano <address@hidden> escreveu:

>
>
> --- Em address@hidden <shell-script%40yahoogrupos.com.br>,
> "Cristiano" <boxferrari@...> 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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]