Closed. This question is off-topic. It is not currently accepting answers. Learn more
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
6年前关闭。
有没有一种方法可以在一个范围内(以字节为单位提供输入:例如:range1=10000000 range2=5000000000)生成任意大小的文件,并用Linux中文件列表(以输入方式提供文件夹)中的随机行填充?
我试图生成一个大文件(1 GB)(从超级用户论坛获得)
openssl rand -out sample.txt -base64 $(( 2**30 * 3/4 ))
split -b 10000 -a 10 sample.txt

这给了我许多文件,其中有来自sample.txt的10K字节
但是我需要调整它(或者在性能方面比这更好的方法),以便它接受我的输入并基于它构建。
例子:
Folder1/file1包含
sddfas|sdfsda f|dfsdg b| sdf| afsdf
asfsdf|erty|345|rty4|et64|wrt
.
.
.
regbg| f234|sgfgfg|v|||

文件夹1/file2包含
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。

最佳答案

生成包含随机内容的文件的简单快速方法:

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

关于linux - 从给定范围内任何大小的文件集中生成填充内容的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19428701/

10-14 16:26
查看更多