文件剪切的sh脚本实现

简介: 需求描述 编写shell脚本实现Linux下不同目录(路径)之间的文件的剪切(移动)操作。其中,文件移动之前所在的目录称为源目录,文件移动之后所在的目录称为目的目录。

需求描述
编写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给开发者带来的一大便利。

目录
相关文章
|
6月前
|
存储 程序员 开发工具
Vim:在系统剪贴板中复制和粘贴文本
【5月更文挑战第3天】
447 8
|
6月前
|
开发工具
如何在 Vim 中剪切、复制和粘贴
如何在 Vim 中剪切、复制和粘贴
|
6月前
|
弹性计算 运维 Shell
删除某个目录下大小为0 的文件
【4月更文挑战第29天】
37 0
|
6月前
|
Shell
|
6月前
|
Linux C语言
man|文本编辑器-nano|文件拷贝-cp|cat|剪切/重命名-mv
man|文本编辑器-nano|文件拷贝-cp|cat|剪切/重命名-mv
crsstat_lhr.sh脚本内容
crsstat_lhr.sh脚本内容
62 0
|
Shell
[20180129]bash显示path环境变量.txt
[20180129]bash显示path环境变量.txt --//PATH环境变量很长,我以前写过一个链接如下: http://blog.itpub.net/267265/viewspace-1192302/ echo $PATH | tr ":" "\n" ...
976 0
|
开发工具
vim介绍/vim颜色显示和移动光标/ vim一般模式下移动光标/ vim一般模式下复制、剪切和粘贴
5.1 vim介绍 5.2 vim颜色显示和移动光标 5.3 vim一般模式下移动光标 5.4 vim一般模式下复制、剪切和粘贴   vim   是vi的升级版本 vim 带有颜色显示 安装vim : yum install  -y    vim-enhanced vim分三种模式...
1543 0