`
hulu26
  • 浏览: 224964 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

shell实现文件拆分

 
阅读更多
#!/bin/sh
#方法二
SUFFIX=txt
#源目录:source;目标目录target;每个文件分割的行数:number
#执行程序命令:./test.txt source target 1300000
#校验输入的参数个数($#:这个程序的参数个数,$0:这个程序的名称,$n:这个程序的参数值(0-9))
if [ $# -ne "3" ];then
  echo " usage: $0 source_directory desting_directory number "
  exit 1
fi

#判断参数1的值是否为目录
if [ ! -d $1 ];then
  echo " $1 is not a directory file"
  exit 1
fi

#判断参数2的值是否为目录
if [ ! -d $2 ];then
  echo " $2 is not a directory file"
  exit 1
fi

#循环源目录下的文件
for curfile in $(ls "$1")
do
{
  #判断文件是否存在
  if [ -e "$1/$curfile" ];then
    #basename截断字符串命令
    filename=`basename $1/$curfile`
   
    #${filename%.*} 从filename末尾,清除与*匹配的最短部分
    file=${filename%.*}
   
    #${file#*.} 从file值开头,清除与*匹配的最短部分
    filestr=${file#*.}
   
    #mkdir $2/"$filestr"
   
    #split命令 (语法: split [-bl] 输入文件 输出文件;参数说明:-b :以文件大小来分,-l:以行数来分)
    cat $1/$curfile  | split -l $3  - "$filestr"_
    mv "$filestr"*  $2
  fi
}
done

for file in $2/*
do
  filename=`basename $2/$file`
  #file=${filename%.*}
  filestr=$filename
  #filedir=${filestr/_*/}
  #echo $filename
  #echo $filedir
  fstring=${filestr/#*_/}
  #echo $fstring
  if [ ! -d $2/"$fstring" ];then
    mkdir $2/"$fstring"
  fi
  mv $file  $file.$SUFFIX
  mv $file.$SUFFIX  $2/"$fstring"
done
echo "Finished...."

#方法二
SUFFIX=txt
if [ $# -ne "3" ];then
  echo " usage: $0 source_directory desting_directory number "
  exit 1
fi
if [ ! -d $1 ];then
  echo " $1 is not a directory file"
  exit 1
fi
if [ ! -d $2 ];then
  echo " $2 is not a directory file"
  exit 1
fi

for curfile in $(ls "$1")
do
{
    if [ -e "$1/$curfile" ];then
      filename=`basename $1/$curfile`
      file=${filename%.*}
      filestr=${file#*.}
     
      mkdir $2/"$filestr"
      cat $1/$curfile  | split -l $3  - "$filestr"_
      mv "$filestr"*  $2/"$filestr"
    fi
}
done

for curfolder in $( ls "$2" )
do
{
    for file in $2/$curfolder/*
    do
      mv $file  $file.$SUFFIX
      rm -f $file
    done
}
done

echo "Finished...."
分享到:
评论

相关推荐

    Shell的设计与实现

    总的来说,Shell的设计与实现是一个涉及操作系统原理、进程通信、文件系统以及用户接口等多个领域的综合课题。通过学习和实践,不仅可以提高对Linux/Unix操作系统的理解,还能提升编程技能,对于计算机科学的学习和...

    Linux的shell实现

    本文将深入探讨如何使用C语言来实现一个简单的Linux shell。我们将覆盖以下几个关键知识点: 1. **命令解析**: 在shell中,用户输入的每一行都被称为一个命令,shell需要将其分解成可执行的部分。这个过程涉及到...

    shell程序实验报告

    本实验的具体任务是编写一个Shell程序,用于实现备份和恢复功能。该程序将利用`do`、`if...fi`、`read`和`case`等Shell命令来完成指定功能。下面将详细介绍这些命令的使用方法及其在本实验中的应用: - **`do` 循环...

    基于Hadoop的ETL处理Shell架构

    在实际应用中,为了提高效率和可维护性,通常会采用模块化设计,将ETL的不同阶段拆分为独立的Shell脚本,通过参数传递和调用来实现整体流程。例如,可以有专门负责数据导入的`import.sh`,数据清洗的`clean.sh`,...

    shell基础十二篇

    8. **文件分类、合并和分割**:`sort`用于排序文件,`uniq`去除重复行,`join`连接两个已排序文件,`cut`提取文件的部分列,`paste`合并多文件的对应行,`split`则将大文件拆分为多个小文件。 9. **tr**:转换和...

    shell编程中级实例

    在Shell中,没有专门的函数来判断值是否为空,而是通过条件表达式实现。例如,可以检查参数是否为空。通过$1,$2,$3等获取命令行参数,其中$0表示脚本文件名。命令的执行结果可以用反引号`获取,而不是单引号`'`,...

    PHP+shell实现多线程的方法

    本文介绍了一种结合shell脚本来实现PHP多线程的方法,这在处理一些需要并发执行的任务时非常有用,比如批量数据处理、文件下载等。 首先,我们来看一个简单的PHP脚本(test.php): ```php for ($i = 0; $i ; $i+...

    android系统中调用shell脚本

    然而,对于非root用户来说,确实有一些方法可以实现对shell脚本的调用,尤其是在开发和调试过程中。下面我们将深入探讨如何在Android应用中执行shell脚本以及相关知识点。 首先,我们需要理解Android的沙箱机制。每...

    linux处理10万个二进制文件

    在提供的文件中,`test.sh`和`checksum.sh`可能是用来实现上述步骤的脚本,而`tips.txt`可能包含了操作过程中的注意事项或指导。对于这些脚本,我们可以通过阅读和学习来进一步理解如何在实际中应用Linux Shell和`...

    shell学习心得

    Shell脚本是用Shell语言编写的程序,通过一系列命令来实现对系统的自动化操作或控制。 #### Shell编程的重要性 Shell编程对于系统管理员和高级用户来说至关重要。它能够极大地提高工作效率,减少重复劳动。Shell...

    Linux与Unix shell编程指南(完整高清版)

    - 分割文件则是将一个大文件拆分成多个小文件。 **知识点16:tr 用法** - `tr` 命令用于翻译或删除文件中的字符。 - tr 常用于简单的文本转换任务,如大小写转换等。 #### 四、登录环境 **知识点17:登录环境** -...

    ModelSplit:将3D模型文件拆分为连接的组件

    将3D模型文件拆分为连接的组件。 当前实现旨在用作Windows中3D模型文件的Shell上下文菜单扩展。 这将一个3D模型文件( libassimp支持的任何格式)作为输入,拆分隔离的组件,并为每个组件生成一个新文件作为输出。 ...

    主要介绍了通过Shell脚本,切割大文件后模拟“多线程”执行数据库脚本,需要的朋友可以参考下

    通过Shell脚本切割大文件,我们可以将大文件拆分成若干小文件,然后并行处理这些小文件,这样可以显著提高执行速度。 切割大文件在Shell中通常使用`split`命令。例如,我们可以指定文件大小和输出前缀,将大文件`...

    Shell浏览器 源码分析

    在计算机科学领域,Shell是一种命令行接口,它允许用户与操作系统进行交互,执行系统命令和操作文件。在这个主题中,我们将深入探讨一个特定的Shell浏览器的源代码,以此来理解其工作原理和设计思路。源码分析是提升...

    Shell program 13问

    Shell脚本允许用户编写一系列命令,实现自动化任务,比如文件管理、系统维护、数据处理等。在脚本中,可以使用条件语句(if...else)、循环结构(for、while)、函数定义等编程元素。此外,Shell还提供了许多内置...

    VB局域网文件传输(C/S)

    为了确保数据完整无误地到达目的地,程序需要将大文件拆分为较小的数据块进行传输,每个数据块单独封装在一个TCP包内。客户端在发送文件时,会将文件分割成多个部分,并逐个发送到服务器。服务器收到每个数据包后,...

    Android ftp文件分割上传,并且实现合并

    本示例就是针对这种需求,提供了一个使用FTP协议在Android设备上实现文件分割上传并合并的Demo。 FTP(File Transfer Protocol)是一种用于在网络上传输文件的协议,它允许用户在客户端和服务器之间发送和接收文件...

Global site tag (gtag.js) - Google Analytics