Inteiro ou arquivo aleatório em linha

1

Eu tenho uma pasta com alguns arquivos chamados 1.mp3, 2.mp3, 3.mp3, ...

Além disso, tenho um comando que aceita um arquivo mp3 como entrada:

blablabla -i mp3/1.mp3

Eu gostaria de passar para o arquivo mp3 random .

blablabla -i mp3/<random int in range 1-n>.mp3

Ou

blablabla -i mp3/<get random file from mp3 folder>

Estou procurando o método mais simples para fazer isso, não importa qual. Quem pode ajudar?

    
por roberto.fernand 22.09.2017 / 09:33

1 resposta

1

Use blablabla -i mp3/$(( ( RANDOM % N ) + 1 )).mp3

Substitua N pelo número máximo que você deseja gerar ou 1 número mínimo.

Ou você pode usar $(shuf -i MIN-MAX -n 1) .

de man shuf :

-i, --input-range=LO-HI
    treat each number LO through HI as an input line
-n, --head-count=COUNT 
    output at most COUNT lines

Na verdade -n 1 em shuf aqui significa apenas gerar um Num aleatório, você pode testar com -n 2 que está gerando duas Números Aleatórios.

Você também pode querer ter isso com printf se o nome do seu arquivo tiver 0s.

printf "%03d.mp3\n" $(( (RANDOM % 100) + 1 ))
018.mp3
    
por sddgob 22.09.2017 / 09:36