Linux下文件剪切的shell脚本实现代码

转载  更新时间:2017年10月11日 09:16:35   作者:Programmer_Zhou   我要评论

本篇文章主要介绍了Linux下文件剪切的sh脚本实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

需求描述

编写shell脚本实现Linux下不同目录(路径)之间的文件的剪切(移动)操作。

其中,文件移动之前所在的目录称为源目录,文件移动之后所在的目录称为目的目录。要求当源目录不存在、源目录下无文件及剪切文件成功时,均要在屏幕上输出相关的日志信息;并且,在程序执行之前,只有源目录是存在的,目的目录需要由程序创建。

shell脚本

umask 0000
if [ -d $1 ]
then
  fcnt=`ls -l $1 | wc -l`
  if [ $fcnt -ne 1 ]
  then
    mkdir -p $2
    if [ -d $2 ]
    then
      mv $1* $2
      echo "move $fcnt file(s) from $1 to $2 successfully!"
    else
      echo "$2 does not exist!!!"
    fi
  else
    echo "$1 is empty!"
  fi
else
  echo "$1 does notexist!!!"
fi

脚本说明

针对本shell脚本(命名为movefile.sh),说明如下:

第一,脚本第一行“umask 0000”表示赋予程序访问文件的权限,因为后续要对文件进行剪切操作,所以必须要有对文件的操作权限才行。

第二,执行脚本的时候,要输入两个参数,第一个表示源文件目录,第二个表示目的目录。具体到脚本中,变量$1表示源文件目录,变量$2表示目的目录。

第三,本脚本的主要流程是这样的:首先判断源文件目录是否存在,如果不存在,则直接打印源目录不存在的消息;如果存在,则获取源目录下的文件数目,如果文件数为0,那么表示无需要剪切的文件,那么直接打印源目录下无文件的消息;如果文件数大于0,那么就创建目的目录,并在目的目录创建成功的情况下之行文件的剪切操作。

第四,执行本脚本的命令格式为:sh movefile.sh 源文件目录 目的目录。注意,两个目录均要以/结束。

脚本执行

将movefile.sh脚本上传到Linux机器上,然后对它进行测试。

第一,当源文件目录不存在时,执行情况如下:

~>sh movefile.sh /home/zhou/movefile/srcdir/ /home/zhou/movefile/destdir/ 
/home/zhou/movefile/srcdir/ does notexist!!!

第二,当源文件目录下无文件时,执行情况如下:

~>sh movefile.sh /home/zhou/movefile/srcdir/ /home/zhou/movefile/destdir/ 
/home/zhou/movefile/srcdir/ is empty!

第三,当源文件目录下有1个文件时,执行情况如下:

~>sh movefile.sh /home/zhou/movefile/srcdir/ /home/zhou/movefile/destdir/ 
move 1 file(s) from /home/zhou/movefile/srcdir/ to /home/zhou/movefile/destdir/ successfully!

第四,当源文件目录下有10个文件时,执行情况如下:

~>sh movefile.sh /home/zhou/movefile/srcdir/ /home/zhou/movefile/destdir/ 
move 10 file(s) from /home/zhou/movefile/srcdir/ to /home/zhou/movefile/destdir/ successfully!

总结

本文中的需求,如果有高级语言(如C语言)实现,那么代码行数至少在100行以上,而如果有shell脚本实现,那么仅需要20行左右的代码即可搞定。如此可以看出,shell命令的强大,这也算是Linux给开发者带来的一大便利。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Linux Shell简介

    Linux Shell简介

    本文编译整理时对相关章节做了相应的删改处理,去掉了针对Mandrake Linux的部分内容
    2013-06-06
  • 关于Shell脚本效率优化的一些个人想法

    关于Shell脚本效率优化的一些个人想法

    很想像之前的一片Mysql全面优化详解那样子写一篇全面的优化文章,但是苦于没有相关书籍参考,也没有发现网络牛人有总结帖或文章之类的,所以就根据个人理解和经验写一些能优化程序效率的东西吧。这篇是不敢称全面的
    2012-09-09
  • shell字符串比较判断是否为数字

    shell字符串比较判断是否为数字

    本文阐述:shell中整数比较方法及字符串的比较方法,如等于,不等于,大于,大于等于,小于,等等
    2013-01-01
  • Shell 命令执行顺序分析[图]

    Shell 命令执行顺序分析[图]

    Shell 从标准输入或脚本中读取的每一行称为管道(pipeline);它包含了一个或多个命令(command),这些命令被一个或多个管道字符(|)隔开
    2013-01-01
  • Linux中多线程详解及简单实例

    Linux中多线程详解及简单实例

    这篇文章主要介绍了Linux中多线程详解及简单实例的相关资料,这里对线程概念及优缺点做了详细介绍并说明如何创建和应用,需要的朋友可以参考下
    2017-07-07
  • shell中的循环语句、判断语句实例

    shell中的循环语句、判断语句实例

    这篇文章主要介绍了shell中的循环语句、判断语句实例,本文对shell的循环语句、判断语句做了一个小结,以及在使用中的注意事项,需要的朋友可以参考下
    2014-07-07
  • 编写Bash Shell通过gnuplot绘制系统性能数据图的方法

    编写Bash Shell通过gnuplot绘制系统性能数据图的方法

    这篇文章主要介绍了编写Bash Shell通过gnuplot绘制系统性能数据图的方法,做到可视化数据收集,需要的朋友可以参考下
    2015-07-07
  • linux mkdir命令详解

    linux mkdir命令详解

    Mkdir 是一个用来在 Linux 系统下创建目录的命令。此命令属于内建命令。接下来通过本文给大家分享linux mkdir命令详解,感兴趣的朋友一起看看吧
    2017-09-09
  • Linux 中unzip解压时中文乱码的解决办法

    Linux 中unzip解压时中文乱码的解决办法

    这篇文章主要介绍了Linux 中unzip解压时中文乱码的解决办法的相关资料,这里提供两种解决办法,希望能通过本文帮助到大家,需要的朋友可以参考下
    2017-09-09
  • shell中冒号的特殊用法分享

    shell中冒号的特殊用法分享

    有关shell中冒号的特殊用法,供朋友们参考
    2013-02-02

最新评论