You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

批量创建子文件夹并按文件名特征迁移对应.txt文件至指定目录的技术实现需求

嘿,我来给你搞定这个批量文件分类迁移的需求!不管你是用终端命令还是写Python脚本,都能轻松应对数千个文件的场景,下面给你两个实用方案:

方案1:Bash命令行(适配Linux/macOS/WSL)

这个方法适合熟悉终端的用户,执行速度超快,处理大量文件效率拉满。

直接在终端里执行以下命令就行:

# 先创建MAIN_DATA根目录(不存在就创建,存在也不报错)
mkdir -p MAIN_DATA

# 遍历data目录下所有符合命名规则的txt文件
for file in data/SN.SXN*.txt; do
    # 从文件名里提取SXNxx部分(比如SN.SXN13.00.ABC.txt → SXN13)
    folder_name=$(echo "$file" | cut -d'.' -f2)
    # 创建对应子文件夹
    mkdir -p "MAIN_DATA/$folder_name"
    # 移动文件到目标文件夹
    mv "$file" "MAIN_DATA/$folder_name/"
done

为啥这么写?

  • cut -d'.' -f2是按点分割文件名,取第2个字段正好是我们要的SXN前缀文件夹名;
  • mkdir -p确保文件夹不存在时自动创建,避免重复创建报错;
  • 循环会自动处理所有匹配的文件,不用手动一个个操作。
方案2:Python脚本(跨平台,Windows也能用)

如果是Windows用户,或者需要更灵活的逻辑扩展,Python脚本就很合适,代码清晰还容易修改。

创建一个叫move_files.py的文件,把下面的代码粘进去:

import os
import shutil

# 定义源文件目录和目标根目录,根据你的实际路径调整
source_dir = "data"
target_root = "MAIN_DATA"

# 确保目标根目录存在
os.makedirs(target_root, exist_ok=True)

# 遍历源目录下的所有文件
for filename in os.listdir(source_dir):
    # 只处理符合命名规则的txt文件
    if filename.endswith(".txt") and filename.startswith("SN.SXN"):
        # 分割文件名提取SXNxx部分
        filename_parts = filename.split('.')
        if len(filename_parts) >= 2:
            folder_name = filename_parts[1]
            # 拼接目标文件夹路径
            target_folder = os.path.join(target_root, folder_name)
            # 创建目标文件夹(不存在就创建)
            os.makedirs(target_folder, exist_ok=True)
            # 拼接源文件和目标文件的完整路径
            source_file = os.path.join(source_dir, filename)
            target_file = os.path.join(target_folder, filename)
            # 移动文件
            shutil.move(source_file, target_file)
            # 可选:打印移动日志,方便跟踪进度
            print(f"已移动:{filename} → {target_folder}")

运行方式:打开命令行,进入脚本所在目录,执行python move_files.py就搞定了。

小提示

  • 先拿几个测试文件跑一遍,确认逻辑没问题再处理全部文件,避免误操作;
  • 两个方案都能轻松处理数千个文件,Bash速度更快,Python更适合需要定制逻辑的场景;
  • 如果有不符合命名规则的文件,脚本/命令会自动跳过,不会出问题。

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

火山引擎 最新活动