是否可以创建一系列基于某种模式命名的文本文件,并用 /dev/urandom 中的 X 个字符填充它们?

是否可以创建一系列基于某种模式命名的文本文件,并用 /dev/urandom 中的 X 个字符填充它们?

是否有一个脚本/工具可以让我按照“[用户定义字符串]-N”之类的模式创建 N 个文件,其中 N 是递增的数字,理想情况下从 0 开始直到 10,并且文件的内容是唯一的,这样在搜索重复文件时就不会被标记?

例子:

user-defined-string-01
user-defined-string-01
user-defined-string-02
user-defined-string-03
user-defined-string-04
user-defined-string-05
user-defined-string-06
user-defined-string-07
user-defined-string-08
user-defined-string-09
user-defined-string-10

依此类推,经过指定的迭代次数来创建所需数量的文件?

我一直手动创建它们(作为文本文件,文件名被复制并粘贴为内容),但这很耗时。我使用这些文件作为占位符,当我收到相关文件时会删除它们,并且可以轻松查看我正在处理/等待接收的文件。我需要能够每次使用不同的用户定义字符串,因为名称并非无关紧要。

我在想也许可以将 /dev/urandom 的一小段内容导入到每个文件中以实现唯一性,但我仍然完全不知道如何生成所需数量的文件和所需的命名方案。我基本上没有编写脚本的经验,实际上大多数时候都在使用 Windows,但我想既然我也安装了 Ubuntu,那么使用 Linux 实现这一点的可能性就更大(然后可能在 Windows 上安装 WSL,看看是否允许我在无需启动 Ubuntu 的情况下使用该脚本)

答案1

一个选择是将数据传输到split实用程序

NAME
       split - split a file into pieces

SYNOPSIS
       split [OPTION]... [FILE [PREFIX]]

DESCRIPTION
       Output  pieces of FILE to PREFIXaa, PREFIXab, ...; default size is 1000
       lines, and default PREFIX is 'x'.

       With no FILE, or when FILE is -, read standard input.

例如,从 /dev/urandom 读取 5 个(默认 512 字节)块,dd并创建 5 个带有前缀user-defined-string-和两位数字后缀的文件,起始于00

dd if=/dev/urandom count=5 | split -b 512 --numeric-suffixes - user-defined-string-

答案2

在中bash,您可以使用for ...; do ...; done带括号扩展的循环(例如{00..10}{000..999}等等。head -c 256读取 256 个字节(我认为,超过这个数量就太浪费磁盘空间了,甚至少于这个数量也可以) 从/dev/urandom和 shell 重定向>写入user-defined-string-+ suffix(01介于和之间的数字10) 文件如下:

for i in {01..10}; do head -c 256 /dev/urandom > "user-defined-string-""$i"; done

相关内容