#!/bin/bash
#cpdir.sh
# 此脚本用于将源目录下的子目录全部复制到目的目录中,不复制源目录中的文件,确保目的目录中的子目录是空目录.
#脚本用法函数
usage()
{
echo "cpdir .sh 源目录 目的目录"
}
#判断是否为两个参数,否则提示脚本用法
if [ $# -ne 2 ]
then
{
usage
exit 0
}
fi
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 "源目录下${srcdir}所有的子目录"
echo "-------------------------------------------"
find $srcdir/* -type d |/usr/bin/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 |/usr/bin/tee /tmp/desdir_tmp_${processid}.txt
#比较在目的目录下建立空子目录后的差异
echo " "
echo "比较目标目录和源目录的差异"
echo "-------------------------------------------------"
diff /tmp/desdir_${processid}.txt /tmp/srcdir_${processid}.txt
rm -f /tmp/srcdir_${processid}.txt
rm -f /tmp/desdir_${processid}.txt
rm -f /tmp/srcdir_tmp_${processid}.txt