bash剪切⽂件_Linux下⽂件剪切的shell脚本实现代码
需求描述
编写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
linux循环执行命令脚本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给开发者带来的⼀⼤便利。
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持脚本之家。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论