You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在BASH中批量调用dd命令生成指定名称和大小的txt文件

批量生成指定大小txt文件的实现方案

原有脚本问题说明

  • 遍历文件名和遍历大小是两个独立的循环,没有建立文件名和对应大小的映射关系,无法实现匹配生成
  • dd命令放在循环外部,只会执行一次,且无法获取循环内的文件名、大小变量
  • 使用ls解析文件属性的方式不稳定,容易因文件名含空格等特殊字符出错
  • /dev/random在生成大文件时可能因为熵池不足出现阻塞,建议替换为/dev/urandom

实现方案

方案1:基于配置表匹配生成(推荐,适合文件名和大小无固定规律的场景)

首先提前准备配置文件file_size_config.txt,每行按文件名 目标大小的格式填写,支持k/m/g等dd可识别的单位,示例内容:

1.txt 1k
2.txt 3m
three.txt 55k

然后执行以下脚本即可批量生成:

#!/bin/bash
# 遍历配置表逐一生成文件
while IFS=' ' read -r filename target_size
do
  # 跳过空行和注释行
  [[ -z "$filename" || "$filename" == \#* ]] && continue
  # 调用dd生成指定大小的文件
  dd if=/dev/urandom of="$filename" bs="$target_size" count=1 status=progress
  echo "已生成文件:$filename,大小:$target_size"
done < file_size_config.txt

如果不需要随机内容,只需要指定大小的空文件,可以替换dd命令为更快的fallocate -l "$target_size" "$filename",生成效率更高。

方案2:固定命名规则自动生成(适合文件名按序号递增、大小有固定规则的场景)

比如要生成1000个文件,命名为1.txt到1000.txt,大小分别为1k、2k...1000k,脚本如下:

#!/bin/bash
for i in {1..1000}
do
  target_size="${i}k"
  filename="${i}.txt"
  dd if=/dev/urandom of="$filename" bs="$target_size" count=1 status=progress
done

注意事项

  • 脚本执行前确认目标文件夹权限,避免写入失败
  • 如果需要生成纯文本内容而非随机二进制,可以将if=/dev/urandom替换为if=<(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 100),生成可阅读的随机文本内容
  • status=progress参数可以实时显示dd的执行进度,不需要可以删除

内容的提问来源于stack exchange,提问作者Kirill Odin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 06:57:00