在linux环境下使用shell将文件夹下文件移动到多个文件夹下,限制文件夹大小

#!/bin/bash

# 原始文件夹路径
source_folder="./source"

# 目标文件夹的基本路径
target_folder_base="./target_folder"

# 每个文件夹的大小限制(以MB为单位)
max_size_mb=70

# 将MB转换为字节
max_size=$((max_size_mb*1024*1024))

# 目标文件夹索引和当前大小初始化
target_index=1
current_size=0

# 创建第一个目标文件夹
mkdir -p "${target_folder_base}_${target_index}"

# 遍历原始文件夹中的文件
find "$source_folder" -type f -print0 | while IFS= read -r -d $'\0' file; do
    # 获取当前文件的大小
    file_size=$(du -b "$file" | cut -f1)

    # 预测添加当前文件后的总大小
    new_size=$((current_size + file_size))

    # 检查预测的大小是否超过限制
    if [ $new_size -gt $max_size ]; then
        # 更新目标文件夹索引
        target_index=$((target_index + 1))
        current_size=0
        # 创建新的目标文件夹
        mkdir -p "${target_folder_base}_${target_index}"
    fi

    # 构建目标路径,保持原始子目录结构
    target_path="${target_folder_base}_${target_index}$(dirname "$file" | sed "s#$source_folder##")"

    # 创建目标路径
    mkdir -p "$target_path"

    # 移动文件到目标路径
    mv "$file" "$target_path/"

    # 更新当前目标文件夹的大小
    current_size=$((current_size + file_size))
done

echo "Files have been distributed into ${target_index} folders."

该代码需要放到shell文件中

#可以使用nano创建文件
nano script.sh
#写入内容后 Ctrl +o来保存文件然后输入enter确认,接着使用Ctrl +x退出

给脚本添加执行权限

chmod +x script.sh

执行脚本

./script.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值