linux下cp目录时排除一个或者多个目录的实现方法

说明:/home目录里面有data目录,data目录里面有a、b、c、d、e五个目录,现在要把data目录里面除过e目录之外的所有目录拷贝到/bak目录中

方法一:终端命令行下执行以下命令

cp -R `find /home/data -type d -path /home/data/e -prune -o -print | sed 1d ` /bak
########################################################
脚本实现
脚本存放路径/home/osyunwei.sh
vi /home/osyunwei.sh #编辑脚本,添加下面的代码
#!/bin/sh
cp -R `find /home/data -type d -path /home/data/e -prune -o -print | sed 1d ` /bak
chmod +x /home/osyunwei.sh #添加脚本执行权限
cd /home #进入脚本存放目录
./osyunwei.sh #执行脚本
########################################################

方法二:使用cp命令复制的时候,只能排除一个目录不被复制,如果想排除两个或者多个目录的话,就需要使用rsync命令来实现了,看下面的例子

如果要排除/home/data目录下面的a、b、c、三个目录,同时拷贝其它所有目录,执行以下命令
yum install rsync #安装rsync
rsync -av --exclude data/a --exclude data/b --exclude data/c data /bak

注意:--exclude后面的路径不能为绝对路径,必须为相对路径才可以,否则出错。

原文出自http://www.osyunwei.com

时间: 2024-08-22 15:08:24

linux下cp目录时排除一个或者多个目录的实现方法的相关文章

Linux cp复制目录时排除一个或者多个目录的方法

cp 貌似没有排除目录的功能,可以使用 rsync 命令来实现了,如: [案例] /home/php-note目录里面有data目录,data目录里面有a.b.c.d.e五个目录,现在要把data目录里面除过e目录之外的所有目录拷贝到/bak目录中. [操作] yum install rsync   #安装rsync cd /home/php-note/ rsync -av --exclude data/a  --exclude data/b  --exclude data/c  data  

Linux下安装Python3和django并配置mysql作为django默认服务器方法_Linux

我的操作系统为centos6.5 1  首先选择django要使用什么数据库.django1.10默认数据库为sqlite3,本人想使用mysql数据库,但为了测试方便顺便要安装一下sqlite开发包. yum install mysql mysql-devel #为了测试方便,我们需要安装sqlite-devel包 yum install sqlite-devel 2  接下来需要安装Python了,因为Python3已经成为主流,所以接下来我们要安装Python3,到官网去下载Python3

linux中tar压缩时排除某些目录或文件

在对某个目录进行压缩的时候,有时候想排除掉某个目录,示例如下: 比如文件目录包含以下文件及目录  代码如下 复制代码 api api/addons api/connect api/connect/connect.php api/google api/remote api/remote/mod 我们要压缩不包含google文件夹.connect/connect.php以及remote下mod文件夹  代码如下 复制代码 tar -zcvf mytest.tar.gz api --exclude=g

linux下cp,mv进行动态库覆盖问题分析

问题的起因在来源于周会上老板提出的一个问题,cp新的so文件替换老的so,会导致程序core掉.这个问题引起了大家的热烈讨论,其中提及了的名词有inode,dentry,buserror等,比较混乱,由于功力浅薄,当时也没有十分清楚引起core掉的原因.于是乎趁着10.1的休息时间,闲里偷忙,理一理当时的问题,有不对之处,还请大家多多指出. 文章主要分为下面几个部分 part1.inode,dentry名词介绍 part2.cp,mv操作对inode的影响 part3.cp,mv覆盖动态库的区别

Linux下传递参数时的Argument list too long错误

这篇文章是回复前几天在论坛一个朋友提出的问题,今天有空,整理了一下,发布出来,供大家参考! 当Linux下试图传递太多参数给一个系统命令(ls *; cp *; rm *; cat *; etc-)时,就会出现"Argument list too long"错误.本文将提供4种解决方法,按复杂程度由低到高排列. 方法#1: 手动把命令行参数分成较小的部分 例1 mv [a-l]* ../directory2 mv [m-z]* ../directory2 这是4种方法里最简单的,但是远

Linux下进程崩溃时定位源代码位置

前几天领导安排一个小项目,大意是解决这样一个问题: 在Linux系统下,进程可能由于各种原因崩溃,此时我们要找到出问题的源代码在某一个文 件的具体行号,这样调试起来就会方便,高效很多,可能是公司项目要用到,想想挺有意思的,加上自己本身是个Linux狂热者,最终花了两三天解决了这个问 题,当然我的领导我们称之为专家指点了我很多,废话少说,下面是解决问题的思路和步骤以及自己的一些想法   解 决该问题的大体思路是这样的:在Linux下,进程崩溃时内核(也就是我们所谓的操作系统)会向进程发送信号,比如

Linux下php-cgi占内存100%电脑变的很卡的解决方法

  Linux系统在使用的时候,电脑变的很卡,发现是php-cgi进程在占用cpu,占用率既然达到了100%,究竟是什么原因导致这种情况的呢?下面小编就给大家介绍下Linux系统php-cgi占用cpu百分百的解决方法. 网站日志目录/home/hosts_log 日志文件有对应的网站id php-cgi日志目录 /usr/local/php_fcgi/logs php-fpm.log slow.log 查看日志文件基本上就可以解决问题了,网站被入侵上传了一个php ddos文件,当然如果不是此

linux下用shell脚本启动可执行.jar文件并关闭的方法

话不多说,开始上代码,为了偷懒,代码只是截图了,感兴趣的朋友可以看了之后自己写,这样加深印象. 上面是小弟写的shell脚本.写的不好请见谅. 首先遇到的第一个坑 我在window下写的 然后道linux中执行,在linux死活都说俺的19行有错误,俺就不明白了,哪里有错,问了下别人,也说没错.突然有个高人问我在哪编写的,小弟回答在win下,他告诉俺执行下这个命令: dos2unix server.sh 然后小弟就执行了,说命令不存在,小弟只好安装这个,执行了以下命令 yum install d

linux下ls命令时显示目录的相关提示文字等信息

用途: 给下一任服务器管理员一些指示,以便于其管理服务器.原本打算 cd 时就提示这些内容,可是不知道怎么用子 shell 控制父 shell 的目录.不过现在这样也好,相比于cd命令,使用ls时会更想知道这个目录的更多信息. 操作步骤: 1.创建目录 ~/bin 2.创建文件 ~/bin/tipls #!/bin/bash # # ls 时显示目录提示文字 # 需要目录中有 .dirtip 文件 # root@upall.cn # 2015-03-26 11:52:56 # ls $* --c