#!/bin/bash
#cpdir.sh
#此脚本用于将源目录下的子目录全部复制到目的目录中,不复制源目录中的文件,确保目的目录中的目录是空的
#脚本用法函数
function usage()
{
echo "cpdir.sh 源目录 目的目录"
}
#判断是否为两个参数,否则提示脚本用法
if [ $# -ne 2 ]
then
{
usage
exit 0
}
if
srcdir=$1
desdir=$2
#判断源目录$srcdir是否为目录,否则提示报错信息和用法
if [ ! -d $srcdir ]
then
{
usage
echo "错误:源目录$srcdir不是目录"
exit
}
fi
#判断目的目录$desdir是否为目录,否则提示报错信息和用法
if [ ! -d $desdir ]
then
{
usage
echo "错误:目的目录$desdir不是目的目录"
exit
}
fi
processid=$$;
#查找源目录下所有的子目录,输出并保存到/tmp/srcdir_进程号.txt文件中
echo "源目录下$scrdir所有子目录"
echo "========================"
find $scrdir/* -type -d |tee /tmp/srcdir_tmp_$processid.txt
sed "s/^$srcdir/$desdir/g" /tmp/srcdir_tmp_$processid.txt > /tmp/srcdir_$processid.txt
#在目的目录下建立空子目录
rm -rf $desdir/*
for subdir in `cat /tmp/srcdir_$processid.txt`
do
{
mkdir $subdir
}
done
echo
echo "目标目录下$desdir所有的子目录"
echo "========================="
find $desdir/* -type d | tee /tmp/desdir_$processid.txt
#比较在目的目录下建立空子目录后的差异
echo
echo "比较目标目录和源目录的差异"
echo "=========================="
diff /tmp/desdir_$processid.txt /tmp/srcdir_$processid.txt
rm -f /tmp/desdir_$processid.txt
rm -f /tmp/srcdir_$processid.txt
rm -f /tmp/srcdir_tmp_$processid.txt