Я ищу команду для создания нескольких (тысяч) файлов, содержащих не менее 1 КБ случайных данных.
Например,
Name size
file1.01 2K
file2.02 3K
file3.03 5K
etc.
Как я могу создать много файлов, как это?
shell-script
files
Жоао Жозе
источник
источник
Ответы:
Поскольку у вас нет никаких других требований, что-то вроде этого должно работать:
(это нужно
bash
по крайней мере для{1..1000}
).источник
bash
по многим причинам, в том числе$((…))
и$RANDOM
. Даже$(…)
не может существовать в каждой оболочке.bash
этом они не происходят вbash
({1..1000}
происходит отzsh
,for n in...; done
и расширения переменной происходит от Bourne оболочки$(...)
,$((...))
и$RANDOM
приходят Ksh). Функции, которые не являются POSIX{1..1000}
,$RANDOM
и/dev/urandom
."%04d"
в этом случае,bash
или выzsh
можете сделать это{0001..1000}
безprintf
Разновидность с
seq
,xargs
,dd
иshuf
:Объяснение в соответствии с просьбой в комментариях:
seq -w 1 10
печатает последовательность чисел от 01 до 10xargs -n1 -I%
выполняет командуsh -c 'dd ... % ...'
для каждого порядкового номера , заменяющего % с нимdd if=/dev/urandom of=file.% bs=$(shuf ...) count=1024
создает файлы из / dev / urandom с 1024 блоками с размером блокаshuf -i1-10 -n1
случайное значение от 1 до 10источник
Вы можете сделать что-то вроде этого:
источник
Это использует один конвейер и кажется довольно быстрым, но имеет ограничение, что все файлы имеют одинаковый размер
Объяснение: Используйте dd для создания 10240 * 1024 байтов данных; разделите это на 10240 отдельных файлов по 1 КБ (имена будут проходить от 'file.aaaa' до 'file.zzzz')
источник