如何批量生成按指定模式命名且内容唯一的占位文本文件?
如何批量生成按指定模式命名且内容唯一的占位文本文件?
兄弟,手动创建这些占位文件确实太折腾了!完全可以用脚本一键搞定,不管你是用Ubuntu还是Windows(包括WSL),都有简单的方案,我给你详细说说:
一、Linux/Ubuntu/WSL 方案(用 Bash 脚本)
这个方法完全符合你提到的用 /dev/urandom 生成唯一内容的需求,而且命名规则可以灵活调整。
步骤1:创建脚本文件
打开终端,创建一个名为 generate_placeholders.sh 的脚本:
touch generate_placeholders.sh
步骤2:写入脚本内容
用文本编辑器打开脚本,粘贴以下代码(注释已经写得很清楚了):
#!/bin/bash # 提示你输入自定义前缀 read -p "请输入文件名前缀: " prefix # 提示输入起始数字(比如你要从0开始就输0,从1开始就输1) read -p "请输入起始数字: " start_num # 提示输入要生成的文件总数 read -p "请输入要生成的文件数量: " count # 计算循环的结束数字 end_num=$((start_num + count - 1)) # 循环生成文件 for ((i=start_num; i<=end_num; i++)); do # 把数字格式化为两位数(比如01、02,要三位数就改成%03d) formatted_num=$(printf "%02d" $i) # 拼接完整文件名 filename="${prefix}-${formatted_num}" # 从/dev/urandom取100字节随机内容写入文件,保证内容绝对唯一 head -c 100 /dev/urandom > "$filename" echo "已生成文件: $filename" done
步骤3:运行脚本
给脚本添加执行权限,然后运行:
chmod +x generate_placeholders.sh ./generate_placeholders.sh
跟着提示输入前缀、起始数字和数量就行,比如输入前缀 my-file、起始数字 1、数量 10,就能生成 my-file-01 到 my-file-10 这10个文件,每个内容都是随机的。
二、Windows 原生方案(用 PowerShell 脚本)
如果你不想折腾WSL,直接用Windows自带的PowerShell也能实现,逻辑和Linux版本差不多:
步骤1:创建脚本文件
打开记事本,粘贴以下代码,保存为 generate_placeholders.ps1(注意保存类型选“所有文件”):
# 提示输入文件名前缀 $prefix = Read-Host "请输入文件名前缀" # 提示输入起始数字 $startNum = Read-Host "请输入起始数字" -AsInt32 # 提示输入要生成的文件数量 $count = Read-Host "请输入要生成的文件数量" -AsInt32 $endNum = $startNum + $count - 1 # 循环生成文件 for ($i = $startNum; $i -le $endNum; $i++) { # 格式化数字为两位数(要三位数就改成"D3") $formattedNum = $i.ToString("D2") $filename = "$prefix-$formattedNum" # 生成200个字符的随机字符串作为内容,保证唯一性 $randomContent = -join ((65..90) + (97..122) + (48..57) | Get-Random -Count 200 | % {[char]$_}) $randomContent | Out-File -FilePath $filename -Encoding utf8 Write-Host "已生成文件: $filename" }
步骤2:运行脚本
- 右键点击开始菜单,选择“Windows PowerShell(管理员)”
- 先解决权限问题(第一次运行需要):
按提示输入Set-ExecutionPolicy RemoteSignedY回车确认 - 切换到脚本所在的文件夹(比如脚本在桌面,就输入
cd Desktop) - 运行脚本:
同样跟着提示输入参数就行。.\generate_placeholders.ps1
小调整技巧
- 如果不需要两位数的数字(比如直接用0、1、2...),把Linux脚本里的
%02d改成%d,PowerShell里的"D2"改成"D1"就行 - 想要调整内容长度,Linux里改
head -c 100的数字,PowerShell里改Get-Random -Count 200的数字
备注:内容来源于stack exchange,提问作者user428026
相关产品推荐
相关产品推荐

