Estou procurando um comando para criar vários (milhares de) arquivos contendo pelo menos 1 KB de dados aleatórios.
Por exemplo,
Name size
file1.01 2K
file2.02 3K
file3.03 5K
etc.
Como posso criar muitos arquivos como este?
shell-script
files
João José
fonte
fonte
Respostas:
Como você não tem outros requisitos, algo assim deve funcionar:
(isso precisa
bash
pelo menos para{1..1000}
).fonte
bash
por várias razões, incluindo$((…))
e$RANDOM
. Mesmo$(…)
pode não existir em todos os shell.bash
nem eles são origináriosbash
({1..1000}
vemzsh
,for n in...; done
e expansão variável vem do shell Bourne,$(...)
,$((...))
e$RANDOM
vêm ksh). Os recursos que não são POSIX são{1..1000}
,$RANDOM
e/dev/urandom
."%04d"
nesse caso,bash
ouzsh
pode fazer{0001..1000}
semprintf
Uma variação de
seq
,xargs
,dd
eshuf
:Explicação conforme solicitado pelos comentários:
seq -w 1 10
imprime uma sequência de números de 01 a 10xargs -n1 -I%
executa o comandosh -c 'dd ... % ...'
para cada número de sequência substituindo o % por eledd if=/dev/urandom of=file.% bs=$(shuf ...) count=1024
cria os arquivos alimentados a partir de / dev / urandom com 1024 blocos com um tamanho de bloco deshuf -i1-10 -n1
um valor aleatório de 1 a 10fonte
Você pode fazer algo assim:
fonte
Isso usa um único pipeline e parece bastante rápido, mas tem a limitação de que todos os arquivos têm o mesmo tamanho
Explicação: Use dd para criar 10240 * 1024 bytes de dados; divida isso em 10240 arquivos separados de 1k cada (os nomes serão executados de 'file.aaaa' até 'file.zzzz')
fonte