目录拷贝–bash实现

刚开始看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


Linux操作实验1 实验环境: VMware+RedHat Linux 实验目的: 初步了解Linux的命令格式; 学会如何得到帮助信息; 练习几个最常用的命令 预备知识: Linux命令行的语法结构: $ command [[-]option(s)] [option argument(s)] [command argument(s)] 含义: $:linux系统提示符,您的linux系统可能是其他的提示符 Command :linux命令的名字 [[-]option(s)] :改变命令行为的一个或多个修饰符,即选项 [option argument(s)] :选项的参数 [command argument(s)] :命令的参数 例如: a. $ ls -la convert.txt b. $ more convert.txt c. $ pwd d. $ cat file1 file2 file3 e. $ rm -r temp f. $ ping –c 3 cse.ogi.edu g. $ telnet cs.berkeley.edu 13 h. $ cc -o short short.c -lbaked i. $ chmod u+rw file1.c j. $ uname –n 实验内容: 一、了解Linux的命令格式并练习几个最常用的命令 1. 使用man命令来获得每个Linux命令的帮助手册,用man ls,man passwd,man pwd命令得到ls,passwd,pwd三个命令的帮助手册。也可以使用:命令名 --help格式来显示该命令的帮助信息,如who –help。请练习ls,passwd,pwd这些命令; 2. 使用whoami命令找到用户名。然后使用who -a命令来看看你的用户名和同一系统其他用户的列表; 3. 在shell提示符后,输入set并按回车键,系统显示环境变量。给出你系统中的环境变量和它的值; 4. 使用man命令获得date,uptime,clear,df,adduser(useradd),userdel命令的用法。请练习date,uptime,clear,df,adduser,userdel,ps,kill命令; 5.对步骤1-4中使用的命令填写以下表格。 命令 用途 使用例子 ls 列出当前目录下的文件和目录 ls ls –a ls –al 二、练习Linux中目录和文件的常用命令 用到的命令包括: cd:改变当前目录 ls:显示指定工作目录下的内容 pwd:显示当前工作目录 mkdir:创建目录 rmdir:删除目录 chmod:改变文件或目录的访问权限 cp:拷贝文件 mv:移动文件 find:查找文件 touch:创建文件 1. 在你的主目录下建立如下目录,给出完成这些工作的所有会话(会话是指命令的输入和结果的输出,你提交的实验报告中要包含这些内容) 假如你的主目录为/home/hm, 在/home/hm分别创建子目录professonal和personal 在/home/hm/professonal下创建子目录courses 在/home/hm/professional/courses下创建子目录major 在/home/hm/professional/courses下分别创建子目录cs和math 在/home/hm/professional/courses下删除子目录math 2. 改变目录到/home/hm/professional/courses/cs下,执行一个命令显示该目录的绝对路径,给出完成这些工作的所有会话; 3. 改变目录到/usr。在这个目录下有多少个文件和目录?写出会话过程; 4. 在/usr/bin目录下共有多少个普通文件、目录文件和链接文件?写出会话过程; 5. 显示你的主目录下所有隐含文件的文件名。写出会话过程; 6. 下面这些目录的inode号是多少:root、你的主目录(home directory)。写出会话过程; 7. 你的主目录的权限是什么?给出你的会话过程; 8. 在你的主目录中创建temp、professional和personal三个子目录,用chmod命令设置使自己拥有读、写和执行3种访问权限,设置其它用户只有读和执行权限。在temp目录下创建名为d1、d2 和d3的目录。在d1目录下,用touch命令创建一个名为f1.txt的文件。给出d1、d2、d3和f1的访问权限。写出会话过程; 9. 用cp命令实现文件的拷贝,给出使用的例子; 10.用mv命令实现文件的移动,给出使用的例子; 11.用find命令搜索主目录,显示更改时间在5日以内的文件及其路径。写出会话过程。
最新发布
10-11
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值