目录拷贝–bash实现
程序员文章站
2022-07-14 13:29:14
...
刚开始看shell,写了一个bash的小程序,功能是将原目录下的所有子目录都复制到目的目录,但是不复制里面的文件。能够用于某些场合:比如需要原来的文件目录结构,但是里面的内容却是需要更新的。下面的代码都是在我自己的电脑上测试的,路径稍微改动下就OK!
#!/bin/sh
function usage(){
echo "Input such as : "
echo "$0 source_dir destion_dir"
}
#输入的参数不少于2个
if [ $# -ne 2 ]
then
usage
exit 1
fi
#判断参数1是不是目录
if [ ! -d $1 ]
then
echo "$1 is not a directory "
usage
exit 1
fi
#判断参数2是不是目录
if [ ! -d $2 ]
then
echo "$2 is not a directory "
usage
exit 1
fi
#保存到变量
srcdir=$1
desdir=$2
echo "source directory :"
echo "------------------"
#查找原目录下的所有目录,用tee双向输出
find $srcdir/* -type d | /usr/bin/tee /tmp/src.txt
#采用sed进行正则匹配,将原目录替换新目录
cat /tmp/src.txt | sed "s,^$srcdir,$desdir,g" > /tmp/des.txt
#创建目录
for subdir in $(cat /tmp/des.txt)
do
mkdir $subdir
done
#删除临时文件
rm -f /tmp/des.txt
rm -f /tmp/src.txt