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

求可在Linux/Windows随机生成数百万目录及文件的工具或脚本

跨平台生成大量随机文件/目录的工具与脚本

Linux 实现方案

1. Shell 脚本

通过bash结合系统工具快速生成层级结构,适合非跨平台场景:

#!/bin/bash
# 生成带随机层级的目录与文件
ROOT_DIR="./large_fs"
mkdir -p "$ROOT_DIR"

# 生成10000个目录节点,每个节点包含2-3层子目录
for i in {1..10000}; do
  # 随机生成2-3层子目录路径
  DIR_LEVELS=$((RANDOM % 2 + 2))
  CURRENT_DIR="$ROOT_DIR"
  for ((j=0; j<DIR_LEVELS; j++)); do
    CURRENT_DIR="$CURRENT_DIR/$(openssl rand -hex 4)"
    mkdir -p "$CURRENT_DIR"
  done
  # 在每个底层目录生成3-5个随机文件(可选写入内容)
  for ((k=0; k<$((RANDOM % 3 + 3)); k++)); do
    FILE_NAME=$(openssl rand -hex 3)
    # 创建空文件或写入随机内容
    touch "$CURRENT_DIR/$FILE_NAME"
    # 若需生成带内容的文件,可替换为:dd if=/dev/urandom of="$CURRENT_DIR/$FILE_NAME" bs=1K count=1 >/dev/null 2>&1
  done
done

调整循环次数和层级数可控制总文件/目录数量,数百万级需注意磁盘IO和内存占用。

2. 跨平台通用Python脚本

Python脚本可同时在Linux和Windows运行,灵活性更高:

import os
import random
import string

def get_random_str(length=8):
    """生成指定长度的随机字符串"""
    return ''.join(random.choices(string.ascii_letters + string.digits, k=length))

def generate_file_system(root_path, total_dir_nodes, files_per_node):
    """生成指定数量的目录节点和文件"""
    os.makedirs(root_path, exist_ok=True)
    for _ in range(total_dir_nodes):
        # 随机生成2-3层子目录
        current_path = root_path
        for _ in range(random.randint(2, 3)):
            current_path = os.path.join(current_path, get_random_str())
            os.makedirs(current_path, exist_ok=True)
        # 在当前目录生成随机文件
        for _ in range(files_per_node):
            file_path = os.path.join(current_path, get_random_str())
            with open(file_path, 'w', encoding='utf-8') as f:
                # 写入100字节随机内容,或注释此行创建空文件
                f.write(get_random_str(100))

# 调用示例:生成10000个目录节点,每个节点下3个文件,总计约30000个文件+30000个目录
generate_file_system("./cross_platform_fs", 10000, 3)

Windows 实现方案

1. PowerShell 脚本

PowerShell原生支持复杂的随机结构生成,适合Windows环境:

$rootDir = ".\windows_large_fs"
New-Item -ItemType Directory -Path $rootDir -Force | Out-Null

# 生成10000个目录节点
for ($i=1; $i -le 10000; $i++) {
    # 随机生成3层子目录
    $dirLayers = @(
        (-join ((65..90) + (97..122) | Get-Random -Count 8 | ForEach-Object {[char]$_})),
        (-join ((65..90) + (97..122) | Get-Random -Count 8 | ForEach-Object {[char]$_})),
        (-join ((65..90) + (97..122) | Get-Random -Count 8 | ForEach-Object {[char]$_}))
    )
    $fullDirPath = Join-Path -Path $rootDir -ChildPath ($dirLayers -join "\")
    New-Item -ItemType Directory -Path $fullDirPath -Force | Out-Null

    # 在每个目录下生成4个随机文件
    for ($j=1; $j -le 4; $j++) {
        $fileName = -join ((65..90) + (97..122) | Get-Random -Count 6 | ForEach-Object {[char]$_})
        $filePath = Join-Path -Path $fullDirPath -ChildPath $fileName
        # 写入200字符随机内容,或用"New-Item -ItemType File -Path $filePath"创建空文件
        -join ((65..90) + (97..122) | Get-Random -Count 200 | ForEach-Object {[char]$_}) | Out-File -Path $filePath -Encoding ASCII
    }
}

2. 批处理脚本(简单场景)

适合快速生成小规模随机结构,随机字符串依赖%random%变量:

@echo off
setlocal enabledelayedexpansion
set "rootDir=batch_test_fs"
md !rootDir! 2>nul

# 生成1000个目录节点,每个节点包含2层子目录
for /l %%i in (1,1,1000) do (
    set "dir1=dir_!random!!random!"
    set "dir2=dir_!random!!random!"
    md "!rootDir!\!dir1!\!dir2!" 2>nul
    # 每个目录下生成5个空文件
    for /l %%j in (1,1,5) do (
        set "file=file_!random!!random!"
        type nul > "!rootDir!\!dir1!\!dir2!\!file!"
    )
)
endlocal

批处理的随机字符多样性有限,数百万级场景建议使用PowerShell或Python脚本。

内容的提问来源于stack exchange,提问作者Susanta Dutta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:05:30