0

有没有办法在Linux中生成一个范围内的任何大小的文件(以字节为单位提供输入:例如:range1 = 10000000 range2 = 5000000000),用文件列表(作为输入提供的文件夹)中的随机行填充?

我尝试了以下方法来生成一个大文件(1 GB)(从超级用户论坛获得)

openssl rand -out sample.txt -base64 $(( 2**30 * 3/4 )) 
split -b 10000 -a 10 sample.txt

这给了我来自 sample.txt 的大量 10K 字节的文件

但是我需要对其进行调整(或者在性能方面比这更好),以便它接受我的输入并以此为基础进行构建。

例子:

文件夹 1/文件 1 包含

sddfas|sdfsda f|dfsdg b| sdf| afsdf
asfsdf|erty|345|rty4|et64|wrt
.
.
.
regbg| f234|sgfgfg|v|||

文件夹 1/文件 2 包含

fs|dfg|hth|dvfbdgh|ryjn|cv
34t|fgsdhb|yttbvx|t8dghfr|grte|vf
.
.
.
sf vcv| ds||||

输出文件应该是

34t|fgsdhb|yttbvx|t8dghfr|grte|vf
asfsdf|erty|345|rty4|et64|wrt
.
.
.
sddfas|sdfsda f|dfsd

注意:输出由前两个文件中的随机行填充,并在达到文件大小限制时退出(从 [1MB,2MB] 中随机选择 - 这意味着允许在 1MB 到 2MB 之间的任何大小,并不意味着任何一个 1MB或 2MB)

4

1 回答 1

1

一种生成具有随机内容的文件的简单快速的方法:

dd if=/dev/random of="${filename}" bs="${size}" count=1

如果您需要更好/dev/urandom的随机性,您可以使用,但由于它不是基于伪随机数生成器,urandom因此速度要慢得多。

如果您想从单个文件中获取 N 个随机行,请使用shuf

shuf -n "${numberOfLines}" "${filename}"

如果您需要[X, Y]一组文件中的随机内容字节,那么命令行实用程序就不够了。如果您安装了脚本语言(Python、Perl),请编写一个小脚本来为您执行此操作。

如果“关闭足够好”,那么您可以使用

shuf folder/* | dd if=- of=sample.txt bs=1K count=2048

获得一个 2MB 的示例文件,然后您可以使用不同的数字缩短或再次调用上面的命令count

于 2013-10-17T14:30:20.707 回答