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

求按单批约1TB总大小分批移动resource子目录的脚本方案

批量移动目录实现方案

前置说明

  • 所有操作默认在/media/date/根目录下执行,正式执行前建议先选2-3个测试目录验证逻辑,避免误操作
  • 脚本默认按十进制1TB=1000GB计算批次阈值,如有需要可以自行调整参数
  • 不会拆分单个resource目录,若单个目录大小超过1TB,会单独占用一个批次文件夹

可直接使用的Bash脚本

脚本逻辑:先统计所有resource目录的大小,按序累加,达到阈值后自动新建下一批次文件夹,将对应目录移入。

#!/bin/bash

# 切换到目标根目录,路径错误则直接退出
cd /media/date/ || exit 1

# 批次大小阈值,单位KB:默认1TB(十进制),如需二进制1TiB请改为1073741824
BATCH_SIZE_KB=1000000000

# 初始化批次和已用空间变量
current_batch=1
current_used_kb=0
batch_dir="${current_batch}-fold"
mkdir -p "$batch_dir"

# 遍历所有resource开头的一级目录,默认按目录名排序,如需优化空间利用率可在find后加 | sort -h 按大小从小到大排序
find . -maxdepth 1 -type d -name "resource*" | while read -r dir; do
    dir_name=$(basename "$dir")
    # 统计当前目录占用大小,单位KB
    dir_size_kb=$(du -s "$dir_name" | awk '{print $1}')
    
    # 累加后超过阈值且当前批次已有内容,则新建下一批次
    if [ $((current_used_kb + dir_size_kb)) -gt $BATCH_SIZE_KB ] && [ $current_used_kb -ne 0 ]; then
        current_batch=$((current_batch + 1))
        batch_dir="${current_batch}-fold"
        mkdir -p "$batch_dir"
        current_used_kb=0
    fi

    # 移动目录到对应批次文件夹,测试时可将mv改为echo mv预览执行结果
    mv "$dir_name" "$batch_dir/"
    current_used_kb=$((current_used_kb + dir_size_kb))
done

使用步骤

  1. 将上述脚本内容保存为/media/date/batch_move.sh
  2. 给脚本添加执行权限:chmod +x /media/date/batch_move.sh
  3. 测试逻辑:将脚本中mv "$dir_name" "$batch_dir/"改为echo mv "$dir_name" "$batch_dir/",执行./batch_move.sh预览输出的移动路径是否符合预期
  4. 确认无误后改回真实mv命令,正式执行脚本即可

自定义调整说明

  • 如果你的资源目录命名不是resource开头,修改find命令中-name "resource*"的匹配规则即可
  • 如需调整批次大小,直接修改BATCH_SIZE_KB参数即可,注意单位为KB

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:06:03