如何在 Linux 中创建随机 .txt(类似 ascii 的人类可读文本)文件

如何在 Linux 中创建随机 .txt(类似 ascii 的人类可读文本)文件

我需要创建一个文本文件,其中包含人类可以读取的随机文本数据。我知道我们可以使用/dev/urandom/dev/random来获取随机数据。但它无法被人类读取。我需要创建一个包含随机文本格式的文件。有什么办法吗?

答案1

我们可以通过以下命令来完成

base64 /dev/urandom | head -c 10000000 > file.txt

它创建一个名为 file.txt 的文件,大小为 10 MB。

答案2

获得输出:

tr -dc A-Za-z0-9 </dev/urandom 

并将其传送至文件。

您可以使用带 -c 或 -n 的命令来限制文件大小

生成1kB文件a.txt的示例:

tr -dc A-Za-z0-9 </dev/urandom | head -c 1024 > a.txt

答案3

wamerican软件包提供了 下的词典/usr/share/dict/words

您可以使用以下技巧来使用这些:

cat /usr/share/dict/words | sort -R | head -1024 > file.txt

请注意,您没有指定几何形状(每行有多少个单词,多少行?)

答案4

base64似乎只输出字母数字字符加/+

我喜欢这样得到更多的“标点符号”,比如

'[:punct:]'
  Punctuation characters; in the 'C' locale and ASCII character
  encoding, this is ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \
  ] ^ _ ` { | } ~

因此使用这个:

'[:graph:]'
     Graphical characters: '[:alnum:]' and '[:punct:]'

并使用tr删除单引号 ' 反引号 ` 和反斜杠 \

tr -dc '[:graph:]' < /dev/urandom | tr -d \''\\'\` | head -c [size]

大小-c选项head可以有一个乘数后缀:b 512、kB 1000、K 1024、MB 1000*1000、M 1024*1024、GB 1000*1000*1000、G 1024*1024*1024,等等,对于T、P、E、Z、Y。

相关内容