cha*_*les 31 shell-script files
我正在寻找一个命令来创建包含至少 1KB 随机数据的多个(数千个)文件。
例如,
Name size
file1.01 2K
file2.02 3K
file3.03 5K
etc.
Run Code Online (Sandbox Code Playgroud)
如何创建许多这样的文件?
lcd*_*047 40
由于您没有任何其他要求,因此应该可以执行以下操作:
#! /bin/bash
for n in {1..1000}; do
dd if=/dev/urandom of=file$( printf %03d "$n" ).bin bs=1 count=$(( RANDOM + 1024 ))
done
Run Code Online (Sandbox Code Playgroud)
(这bash
至少需要{1..1000}
)。
Flo*_*elf 13
seq
、xargs
、dd
和 的变体shuf
:
seq -w 1 10 | xargs -n1 -I% sh -c 'dd if=/dev/urandom of=file.% bs=$(shuf -i1-10 -n1) count=1024'
Run Code Online (Sandbox Code Playgroud)
根据评论的要求进行解释:
seq -w 1 10
打印从01到10的数字序列
xargs -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 if=/dev/urandom bs=1024 count=10240 | split -a 4 -b 1k - file.
Run Code Online (Sandbox Code Playgroud)
说明:使用dd创建10240*1024字节的数据;将其拆分为 10240 个单独的文件,每个文件 1k(名称将从“file.aaaa”到“file.zzzz”运行)
小智 5
这将创建 15 个文件,每个文件包含 1MB 的随机数据:
for i in {001..015}; do head -c 1M </dev/urandom >randfile$i; done
Run Code Online (Sandbox Code Playgroud)