欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

目录拷贝–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