Linux 完成指定目录文件的删除以及备份
**删除指定目录下的文件夹和文件,并做备份**
代码设计思路
① 首先需要判断没有变量输入的情况,这样的情况无法正常操作。
② 判断输入的变量是否为合理的路径(文件夹)名。
③ 将指定目录下的文件进行备份,复制到固定备份的文件下。
④ 对指定目录下的文件进行删除即可。
函数的说明
函数 | 用法 |
---|---|
$# | 传递给脚本或者函数的参数的个数 |
-ne | 不等于 |
echo | 返回后面的参数 |
! | 不是 |
-d | 判断后面参数是否为路径名(文件夹) |
$1 | 传给函数的第一个参数 |
cd | 打开下一文件夹(路径) |
ls | 展开X目录下的所有文件和文件夹 |
$? | 上个脚本或者函数的返回参数,正常运行返回1,不正常则返回0,大多数情况返回1 |
-eq | 等于 |
cp | 复制文件夹dirA下的所有文件到dirB中 |
rm | 删除当前目录下的所有文件及文件夹而且不确认 |
具体操作
①对实验环境进行了测试:
建立的homework文件夹下有文件shell脚本unload.sh以及load文件夹(目标文件夹),load文件夹下包含四个文件:1.txt,2.txt,3.txt,4.txt。下面将利用脚本将load文件夹下的文件全部备份到统一目录null中,并进行删除。
②运行函数脚本(赋予权限):
对脚本函数进行授予权限后,可以较为清晰的看到,load中的文件已经完全被备份到了预先设定的目录下,而备份库null中也已经出现了备份的文件。
具体代码
#!/bin/bash
#删除指定目录下的文件以及文件夹并备份
#检查输入的参数是否有效
#输入的参数为零
if [ $# -ne 1 ]
then
echo "usage:$0<directory>"
exit
fi
#输入的参数不是文件夹
if [ ! -d $1 ]
then
echo "$1 is not a directory"
exit
fi
#目标目录下文件复制到null文件夹
cp $1/* null
#*/
#展开目标目录
cd $1
#如果参数不为零(含有文件),删除所有文件
if [ $? -eq 0 ]
then
rm -rf *
else
echo "A problem has occurred in creating backup"
echo "The directory will not be creased"
echo "Please check the backup device"
exit 3
fi
#end of unload
注:以上思路均来源于网上。文章目的只是为了自己学习总结回顾,欢迎指出错误,相互学习。如有冒犯,请联系删除,谢谢!