首页 > 系统相关 >linux/ubuntu下一个文件夹里面文件太多打不开,用脚本分成一个个小文件夹

linux/ubuntu下一个文件夹里面文件太多打不开,用脚本分成一个个小文件夹

时间:2024-12-03 11:24:04浏览次数:5  
标签:linux 文件夹 file ubuntu path folder os dir

python

"""
功能:把大文件目录分成几个小文件
"""
import os
import shutil
import random

path_dir = "/media/0001_data/"
T_nums = 2000

files = os.listdir(path_dir)
# random.shuffle(files)

for cnt, file in enumerate(files):
    print(cnt, file)
    path_file = os.path.join(path_dir, file)
    div_ = int(cnt / T_nums)
    if div_ < 1:
        continue

    # div_ += 50  ###################

    dir_name = path_dir.split("/")[-2]
    dir_name_div = dir_name + "_" + str(div_)
    base_path = os.path.dirname(os.path.dirname(path_dir))
    dir_new = os.path.join(base_path, dir_name_div)
    if not os.path.exists(dir_new):
        os.makedirs(dir_new)
    shutil.move(path_file, dir_new)

shell

运行需要bash xxx.sh

#!/bin/bash

# 定义源文件夹和目标文件夹(使用绝对路径)
src_dir="/media/0001_data"
dest_dir="/media/0001_data_split"

# 检查源文件夹是否存在
if [ ! -d "$src_dir" ]; then
    echo "源文件夹不存在:$src_dir"
    exit 1
fi

# 检查目标根文件夹
if [ -z "$dest_dir" ]; then
    echo "目标文件夹路径未设置。"
    exit 1
fi

# 创建目标根文件夹(如果不存在)
mkdir -p "$dest_dir" || {
    echo "无法创建目标根文件夹:$dest_dir"
    exit 1
}

# 初始化计数器
folder_index=1
file_count=0
max_files_per_folder=2000

# 遍历源文件夹中的所有文件
for file in "$src_dir"/*; do
    # 检查文件是否存在
    if [ ! -f "$file" ]; then
        echo "跳过无效文件:$file"
        continue
    fi

    # 创建新的子文件夹
    if (( file_count % max_files_per_folder == 0 )); then
        current_folder="$dest_dir/folder_$folder_index"
        mkdir -p "$current_folder" || {
            echo "无法创建子文件夹:$current_folder"
            exit 1
        }
        echo "创建新文件夹:$current_folder"
        ((folder_index++))
    fi

    # 移动文件
    mv "$file" "$current_folder" || {
        echo "无法移动文件:$file 到 $current_folder"
        exit 1
    }
    ((file_count++))
done

echo "文件整理完成,总共创建了 $((folder_index-1)) 个文件夹,移动了 $file_count 个文件。"

标签:linux,文件夹,file,ubuntu,path,folder,os,dir
From: https://www.cnblogs.com/yanghailin/p/18583705

相关文章

  • [原创]lazarus在(linux)设置应用在任务栏单一窗口图标显示
    如果lazarus的(linux)应用有多个form,并且form用show显示,在任务栏就会显示多个form的图标,个人感觉比较乱。如果只想显示主form图标,可以在projecr的lpk增加:Application.TaskBarBehavior:=tbSingleButton;以下是完整的lpk:programproject1;{$modeobjfpc}{$H+}uses{......
  • Windows mstsc 连接Ubuntu18.04 远程桌面原理和过程
    前言全局说明Windowsmstsc连接Ubuntu18.04远程桌面原理和过程一、说明1.1环境:Windows11家庭版23H222631.3737Ubuntu18.04.6LTS(Linuxqt-vm5.4.0-150-generic#167~18.04.1-UbuntuSMPWedMay2400:51:42UTC2023x86_64x86_64x86_64GNU/Linux)1.2名......
  • 【服务器运维】Linux基础技能与Conda的使用
    前言近期在参加书生大模型实战营,将会总结课程中的学习笔记发布到博客中来与大家一起分享学习交流。本次学习如何使用Linux与Conda,使用的服务器环境是InternStduio(以下简称IS平台)提供的,感谢上海人工智能实验室与书生实战营。InternStduio开发机如何创建,可以参考官方文档,不再过......
  • 系统文件IO 例题 Linux环境 C语言实现
    问题:通过系统文件IO,实现文件拷贝功能。测试:文本  图片 视频代码:#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<stdio.h>#include<unistd.h>intmain(intargc,char*argv[]){if(argc<3){printf("a......
  • ubuntu 安装supervisor
     在Ubuntu上安装Supervisor作为进程管理工具,可以通过以下步骤完成:1.更新系统包首先更新系统的软件包列表:sudoaptupdate&&sudoaptupgrade-y 2.安装Supervisor通过apt安装Supervisor:sudoaptinstall-ysupervisor 3.检查Supervisor服务......
  • ubuntu 安装redis
     在Ubuntu上安装Redis可以通过以下步骤实现:1.更新系统包在安装Redis之前,先更新系统的包列表:sudoaptupdate&&sudoaptupgrade-y2.安装Redis使用apt安装Redis:sudoaptinstall-yredis-server3.检查Redis服务状态安装完成后,检查Redis服务是否......
  • 宝塔Linux面板的系统要求是什么?
    宝塔Linux面板对系统环境有明确的要求,以确保其稳定运行和最佳性能。以下是详细的系统要求:内存要求:最低要求:至少512MB以上,推荐768MB以上。纯面板运行大约占用系统60MB内存。更高的内存配置可以确保面板和网站的流畅运行,尤其是在处理多个任务或高流量网站时。硬盘空间要求:......
  • 初识Linux---Linux中的常用基本指令(上)
    Linux中的基本指令一.Linux操作系统的背景二.Linux下的基本指令01.ls指令02.pwd命令03.cd指令04.touch指令和nano05.mkdir指令(重要):06.rmdir指令&&rm指令(重要)07.man指令(重要):07.cp指令(重要)08mv指令(重要)09cat指令10.more指令11.less指令(重要)一.Linux操作系统的......
  • Linux内核ftrace的使用
    文章目录ftrace使用一、ftrace的功能与用途二、ftrace的实现原理三、ftrace的使用步骤1.查看tracer:通过查看available\_tracers文件,了解当前内核中可用的插件追踪器2.选择tracer3.设置参数和过滤器4.开启追踪5.读取追踪结果四、ftrace的常用traceravailable_tracer......
  • 在 Ubuntu 使用 fonts-noto-cjk 设置 Matplotlib 支持中文的完整教程
    在Ubuntu使用fonts-noto-cjk设置Matplotlib支持中文的完整教程1.为什么需要配置中文字体?2.安装`fonts-noto-cjk`安装命令:检查字体安装是否成功3.配置Matplotlib支持中文3.1手动加载字体3.2设置全局字体(可选)修改Matplotlib全局配置4.清理字体缓存(解决......