Bash: Como listar n número aleatório de arquivos (sem cabeça nem cauda)

6

Eu tenho um grande diretório contendo vários arquivos de tipo similar. Eu tenho que enviar alguns arquivos aleatórios para auditoria. Esses arquivos não devem ser da parte superior ou inferior (por exemplo, não em head ou tail ). Este é o processo sub que estou lutando.

Eu quero obter qualquer número de arquivos. Pode ser 10 ou 2 ou 3, mas não deve estar em nenhuma ordem.

Por exemplo, desta lista de arquivos:

10 1121231243 12 3124234ewdf 31243345 xaa 112 1121231243214 3 3124234ewdffd 3124334532 xab 1121 112123124321442334 3124 31243 3124334532324 xac 112123 1121ewszf 3124234 312433 file1

Gostaria de obter um subconjunto aleatório, como neste caso:

1121 112123124321442334 3124 1121ewszf
    
por temp 31.01.2014 / 16:05

2 respostas

7

Use aleatório sort ( -R ou --random-sort ) e, em seguida, head ou tail :

ls | sort -R | head -10

    
por 31.01.2014 / 16:35
1

Você pode usar sort -R para classificar a lista aleatoriamente e usar a variável $RANDOM com head para obter um número aleatório de resultados:

ls | sort -R | head -n $(( $RANDOM % 10 + 1 ))

Você receberá 10 resultados ou menos (nunca zero)

    
por 31.01.2014 / 18:02