#!/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...."
#方法二
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...."
发表评论
-
linux常用命令二
2012-09-21 17:11 826// 查看IP地址 $ ifconfig // ... -
linux 共享磁盘mount
2012-09-21 16:25 1818用root用户登录linux系统 步骤 1 cd 进入m ... -
linux 安装jdk
2012-09-21 14:39 775下载linux环境下的jdk安装包:j2sdk-1_4_2_ ... -
stat命令(获取文件信息)
2012-02-10 12:43 969>ll drwxr-xr-x 3 root root 7 ... -
suse linux 10 安装JDK 配置环境变量
2011-12-23 14:28 72891.JDK安装 下载最新Linux ... -
shell实现FTP上传文件
2011-11-16 17:59 1021#!/bin/sh echo "open 192.1 ... -
Linux系统CPU使用情况
2011-11-16 14:35 3440linux下有几个命令可以从系统中提取出CPU或内存的使用情况 ... -
shell脚本实现系统监视统计
2011-11-16 14:18 12791、监视系统统计信息 要自动监视系统的磁盘空间,首先要使用可以 ... -
shell下获取系统时间的方法
2011-11-16 13:39 1383直接调用系统变量 获取今天时期:`date +%Y%m%d` ... -
操作系统
2011-08-04 17:53 918操作系统:Windows、UNIX、Linux、MAC(苹果专 ... -
linux crontab 定时任务
2011-05-10 15:49 14711. crontab 用来执行定时任务 1.1 命令格式: ... -
Linux系统下查看oracle SID的方法
2011-04-11 17:01 26441. 登陆oracle用户 2. 修改/home/ora ... -
linux下oracle数据库服务和监听的启动停止
2011-04-11 16:59 15411、启动数据库: oracle@suse92:~> sq ... -
linux SCP 文件传输
2011-03-31 16:56 3729linux 文件传输 #将本地文件复制到远程服务器中(远程服 ... -
linux Tcl、expect 安装
2011-03-30 16:06 5781需要两个安装程序tcl8.4.13-src.tar.gz、ex ... -
linux常用命令一
2011-02-22 17:48 2038--将username用户添加到groupname组中 use ... -
Linux远程拷贝之ftp与scp命令
2010-12-30 15:14 2396ftp命令: 其中一台 ... -
Oracle Merge Into
2010-10-30 16:39 1300用途 merge 命令可以用来用一个表中的数据来修改或者插入到 ...
相关推荐
总的来说,Shell的设计与实现是一个涉及操作系统原理、进程通信、文件系统以及用户接口等多个领域的综合课题。通过学习和实践,不仅可以提高对Linux/Unix操作系统的理解,还能提升编程技能,对于计算机科学的学习和...
本文将深入探讨如何使用C语言来实现一个简单的Linux shell。我们将覆盖以下几个关键知识点: 1. **命令解析**: 在shell中,用户输入的每一行都被称为一个命令,shell需要将其分解成可执行的部分。这个过程涉及到...
本实验的具体任务是编写一个Shell程序,用于实现备份和恢复功能。该程序将利用`do`、`if...fi`、`read`和`case`等Shell命令来完成指定功能。下面将详细介绍这些命令的使用方法及其在本实验中的应用: - **`do` 循环...
在实际应用中,为了提高效率和可维护性,通常会采用模块化设计,将ETL的不同阶段拆分为独立的Shell脚本,通过参数传递和调用来实现整体流程。例如,可以有专门负责数据导入的`import.sh`,数据清洗的`clean.sh`,...
8. **文件分类、合并和分割**:`sort`用于排序文件,`uniq`去除重复行,`join`连接两个已排序文件,`cut`提取文件的部分列,`paste`合并多文件的对应行,`split`则将大文件拆分为多个小文件。 9. **tr**:转换和...
然而,对于非root用户来说,确实有一些方法可以实现对shell脚本的调用,尤其是在开发和调试过程中。下面我们将深入探讨如何在Android应用中执行shell脚本以及相关知识点。 首先,我们需要理解Android的沙箱机制。每...
在Shell中,没有专门的函数来判断值是否为空,而是通过条件表达式实现。例如,可以检查参数是否为空。通过$1,$2,$3等获取命令行参数,其中$0表示脚本文件名。命令的执行结果可以用反引号`获取,而不是单引号`'`,...
本文介绍了一种结合shell脚本来实现PHP多线程的方法,这在处理一些需要并发执行的任务时非常有用,比如批量数据处理、文件下载等。 首先,我们来看一个简单的PHP脚本(test.php): ```php for ($i = 0; $i ; $i+...
在提供的文件中,`test.sh`和`checksum.sh`可能是用来实现上述步骤的脚本,而`tips.txt`可能包含了操作过程中的注意事项或指导。对于这些脚本,我们可以通过阅读和学习来进一步理解如何在实际中应用Linux Shell和`...
Shell脚本是用Shell语言编写的程序,通过一系列命令来实现对系统的自动化操作或控制。 #### Shell编程的重要性 Shell编程对于系统管理员和高级用户来说至关重要。它能够极大地提高工作效率,减少重复劳动。Shell...
- 分割文件则是将一个大文件拆分成多个小文件。 **知识点16:tr 用法** - `tr` 命令用于翻译或删除文件中的字符。 - tr 常用于简单的文本转换任务,如大小写转换等。 #### 四、登录环境 **知识点17:登录环境** -...
将3D模型文件拆分为连接的组件。 当前实现旨在用作Windows中3D模型文件的Shell上下文菜单扩展。 这将一个3D模型文件( libassimp支持的任何格式)作为输入,拆分隔离的组件,并为每个组件生成一个新文件作为输出。 ...
通过Shell脚本切割大文件,我们可以将大文件拆分成若干小文件,然后并行处理这些小文件,这样可以显著提高执行速度。 切割大文件在Shell中通常使用`split`命令。例如,我们可以指定文件大小和输出前缀,将大文件`...
在计算机科学领域,Shell是一种命令行接口,它允许用户与操作系统进行交互,执行系统命令和操作文件。在这个主题中,我们将深入探讨一个特定的Shell浏览器的源代码,以此来理解其工作原理和设计思路。源码分析是提升...
Shell脚本允许用户编写一系列命令,实现自动化任务,比如文件管理、系统维护、数据处理等。在脚本中,可以使用条件语句(if...else)、循环结构(for、while)、函数定义等编程元素。此外,Shell还提供了许多内置...
为了确保数据完整无误地到达目的地,程序需要将大文件拆分为较小的数据块进行传输,每个数据块单独封装在一个TCP包内。客户端在发送文件时,会将文件分割成多个部分,并逐个发送到服务器。服务器收到每个数据包后,...
本示例就是针对这种需求,提供了一个使用FTP协议在Android设备上实现文件分割上传并合并的Demo。 FTP(File Transfer Protocol)是一种用于在网络上传输文件的协议,它允许用户在客户端和服务器之间发送和接收文件...