热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在terminal/bash脚本中将文件夹拆分为多个子文件夹

如何解决《在terminal/bash脚本中将文件夹拆分为多个子文件夹》经验,为你挑选了2个好方法。

我有几个文件夹,每个文件夹有15,000到40,000张照片.我希望将每个文件拆分为子文件夹 - 每个文件夹中包含2,000个文件.

有什么快速的方法可以创建我需要的每个文件夹并移动所有文件?

目前我只能找到如何将文件夹中的前x个项目移动到预先存在的目录中.为了在包含20,000个项目的文件夹上使用它...我需要手动创建10个文件夹,并运行命令10次.

ls -1  |  sort -n | head -2000| xargs -i mv "{}" /folder/

我尝试将它放入for循环中,但是在使用mkdir正确制作文件夹时遇到了麻烦.即使我解决了这个问题,我还是需要程序只为每个第20个文件创建文件夹(新组的开始).它想为每个文件创建一个新文件夹.

那么......我怎样才能轻松地将大量文件移动到每个文件中任意数量文件的文件夹中?

任何帮助都会......非常......乐于助人!



1> tmp..:

尝试这样的事情:

for i in `seq 1 20`; do mkdir -p "folder$i"; find . -type f -maxdepth 1 | head -n 2000 | xargs -i mv "{}" "folder$i"; done

完整脚本版本:

#!/bin/bash

dir_size=2000
dir_name="folder"
n=$((`find . -maxdepth 1 -type f | wc -l`/$dir_size+1))
for i in `seq 1 $n`;
do
    mkdir -p "$dir_name$i";
    find . -maxdepth 1 -type f | head -n $dir_size | xargs -i mv "{}" "$dir_name$i"
done



2> nisetama..:

下面的代码假定文件名不包含换行符,空格,制表符,单引号,双引号或反斜杠,并且文件名不以破折号开头。它还假定IFS尚未更改,因为它使用while read代替while IFS= read,并且因为未引用变量。添加setopt shwordsplitZsh。

i=1;while read l;do mkdir $i;mv $l $((i++));done<<(ls|xargs -n2000)

下面的代码假定文件名不包含换行符,并且它们不以短划线开头。-n2000一次接受2000个参数,它{#}是作业的序号。替换{#}'{=$_=sprintf("%04d",$job->seq())=}'以四位数填充数字。

ls|parallel -n2000 mkdir {#}\;mv {} {#}

下面的命令假定文件名不包含换行符。它使用renameAristotle Pagaltzis 的实现,这是renameHomebrew中的公式,在哪里-p需要创建目录,在哪里--stdin需要从STDIN获取路径,在哪里$N是文件编号。在其他实现中,可以使用$.++$::i代替$N

ls|rename --stdin -p 's,^,1+int(($N-1)/2000)."/",e'


使用`ls`会带来很多问题。我对您的示例做了一些修改:`find。-类型f -print0 | parallel -0 -n2000 mkdir“ dir _ {#}” \; mv {}“ dir _ {#}”`。对我来说同样有效。
推荐阅读
  • Day 5 20190120 老男孩python学习第5天 内容整理
    今天继续看MasteringPycharm的视频,一个半小时看git的教学视频:视频1小时44分钟,看了2个半小时以上https:www.youtube ... [详细]
  • Lunix历史及如何学习
    1.Lunix是什么1.1Lunix是操作系统还是应用程序Lunix是一套操作系统,它提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构, ... [详细]
  • 【Linux系统编程:基础IO 下】dup2 实现输出重定向、输入重定向、追加重定向 | 理解磁盘 | 理解文件系统中inode的概念 | 软硬链接
    写在前面这里先接着《基础IO上》中的缓冲区的内容作些补充,这里主要补充dup2接口。✔测试用例一:#include#inclu ... [详细]
  • delphi控件大全
    本文章已收录于:delphi控件查询:http:www.torry.nethttp:www.jrsoftware.orgTb97最有名的工具条(ToolBar) ... [详细]
  • 1、概念共享内存:共享内存是进程间通信中最简单的方式之一。共享内存允许两个或更多进程访问同一块内存,就如同malloc()函数向不同进程返回了指向同一个 ... [详细]
  • LwIP系列内存管理(堆内存)详解
    一、目的小型嵌入式系统中的内存资源(SRAM)一般都比较有限,LwIP的运行平台一般都是资源受限的MCU。为了能够更加高效的运行ÿ ... [详细]
  • SpringBoot 整合 ShardingJDBC(mysql8.0)(简单入门含gitee源码)
    SpringBoot整合Sharding-JDBC(mysql-8.0)感谢​我也是从网上的资源查找后进行学习的,所以该项目仅适用与个人学习,不建议使用于生产项目。​这里感谢如下: ... [详细]
  • python-去除字符串中特定字符一、去掉字符串两端字符:strip(,rstrip(,lstrip(s.strip(#删除两边(头尾空字符,默认是空字符s. ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 如何使用Python selenium实现淘宝抢单机器人
    这篇文章将为大家详细讲解有关如何使用Pythonselenium实现淘宝抢单机器人,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章 ... [详细]
  • Ubuntu简介Ubuntu(乌班图)是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在” ... [详细]
  • 计算机操作系统操作及专业化软硬件操作
    计算机一般软硬件技术问题掌握计算机操作系统的一般操作和软硬件运行维护知识以及通用工具的使用方法可以让我们在解决日常面临的技术问题时更加 ... [详细]
  • 下载maven:http:maven.apache.orgdownload.cgi解压缩,然后配置环境变量:echo$SHELL  ——-查看当前MacOSX是什么样的Shell如 ... [详细]
author-avatar
董雪高
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有