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

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

RE: [shell-script] Imprimir sequência de números randomicamente, SEM REP


From: Dito Ramos
Subject: RE: [shell-script] Imprimir sequência de números randomicamente, SEM REPETIÇÃO
Date: Wed, 03 May 2017 14:45:16 -0300

Itamar e Casanova.
Ambas as soluções funcionaram perfeitamente.
Obrigado a todos por mais essa força.

Dito

De: "William Alves dos Santos address@hidden [shell-script]" <address@hidden>
Enviada: 2017/05/03 11:56:07
Para: address@hidden
Assunto: Re: [shell-script] Imprimir sequência de números randomicamente, SEM REPETIÇÃO
 
 

Sua lógica esta sucinta, faria assim:
 
seq 1 500 | while read i; do (( $i % 2 == 0 )) && echo $i ; done | shuf
 
Vi que outras pessoas responderam também com o shuf
 
Espero ter ajudado
 
Att

 

 

On Wed, May 3, 2017 11:13 AM, Alfredo Casanova address@hidden [shell-script] address@hidden wrote:
 

 

Ah, no exemplo que enviei esqueci de colocar o step no echo. No seu caso, mude o echo {1..399} para echo {2..500..2}
 
On Wed, May 3, 2017 at 11:08 AM Alfredo Casanova <address@hidden> wrote:
Tem essa:
 
paste -d" " <(ls *.mp3 |sed -E 's/^|$/\"/g') <(paste -d- <(echo {1..399}|tr ' ' '\n'|shuf)  <(ls *.mp3)|sed -E 's/^|$/\"/g') | sed 's/^/mv /g' 
isso vai produzir o seguinte resultado: 
mv "Chico Buarque - Construção.mp3" "61-Chico Buarque - Construção.mp3"
mv "John Lennon - Imagine.mp3" "39-John Lennon - Imagine.mp3"
mv "Vinícius de Moraes - Garota de Ipanema.mp3" "241-Vinícius de Moraes - Garota de Ipanema.mp3"
mv "Chico Buarque - Construção.mp3" "308-Chico Buarque - Construção.mp3"
mv "John Lennon - Imagine.mp3" "1-John Lennon - Imagine.mp3"
 
e aí é só adicionar um | bash no final e ele vai mover tudo
 
paste -d" " <(ls *.mp3 |sed -E 's/^|$/\"/g') <(paste -d- <(echo {1..399}|tr ' ' '\n'|shuf)  <(ls *.mp3)|sed -E 's/^|$/\"/g') | sed 's/^/mv /g' | bash
 
 
On Wed, May 3, 2017 at 8:21 AM address@hidden [shell-script] <address@hidden> wrote:
 

Caro Dito

 
Que tal essa solução:
 
paste <(seq -f "%03g" 2 2 500 | shuf) <(ls meu_diretorio) | awk -F '\t' '{system("mv \042" $2 "\042 \042" $1 "-" $2 "\042")}'
 
 
Não sei no seu caso mas o "seq" comigo não preciso usar o " tr ' ' '\n' ", pois cada número já sai em uma linha distinta.
Talvez esse recurso só seja necessário se a construção fosse "echo {002..500..2}"
 
Obs.: O "\042" dentro do awk emula a aspas dupla ( " ) para a construção do comando.
 
Espero que ajude em algo
 
[]'s
Itamar

 

 

 

 
Abraços

William Alves dos Santos
Cel.: (11) 99616 8602 - VIVO
Cel.: (11) 96835 8172 - TIM

 


reply via email to

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