linux下cp目录时排除一个或者多个目录的方法
2014-01-26 18:10
106 查看
方法一:终端命令行下执行以下命令cp -R `find /home/data -type d -path /home/data/e -prune -o -print | sed 1d ` /bak
find A ! -name 100 ! -name 101 -exec cp {} somedir/{} \;
使用cp命令复制的时候,只能排除一个目录不被复制,如果想排除两个或者多个目录的话,就需要使用rsync命令来实现了,看下面的例子方法二:
如果要排除/home/data目录下面的a、b、c、三个目录,同时拷贝其它所有目录,执行以下命令
rsync -av --exclude data/a --exclude data/b --exclude data/c data /bak
注意:--exclude后面的路径不能为绝对路径,必须为相对路径才可以,否则出错。
使用 find 加 cpio 进行拷贝:备注:此方法来自 Advanced Bash-Scripting Guide,需要了解的童鞋自己去参考了。用
过 find 的童鞋都知道,find 对文件的过滤那是非常强大的,配合 cpio
来进行目录的遍历拷贝就可以实现过滤指定的文件或文件夹,当然也可以做到只备份特定的文件或文件夹,你可以用 find
的各种过滤参数达到拷贝哪天的文件,拷贝近期更改的文件等特殊效果,而且 find 支持正则表达式,这种方式想比第一种使用 rsync
跳过文件的方式更加灵活,因此非常推荐使用此方式进行目录拷贝。cd dir1
find
. -regextype posix-egrep -mindepth 1 ! -regex ‘./(dev|tmp)($|/.*)’ !
-name Makefile -a ! -name .svn | cpio -admvp /home/dir2
小解释下:find
的 -regextype 参数指定正则表达式类型,posix-egrep 为 egrep 用的扩展正则表达式,-mindepth 使 find
的输出中不包括目录本身,-regex 参数指定过滤的文件的正则表达式,-regex
前面的感叹号表示跳过,’./(dev|tmp)($|/.*)’ 这个正则表达式即表示跳过目录中的第一层 dev 和 tmp
目录以及下面所有的文件和文件夹,最后两个 -name 指定要跳过文件名为 Makefile 和 .svn
的文件,这样在备份版本库的时候非常有用。
find A ! -name 100 ! -name 101 -exec cp {} somedir/{} \;
使用cp命令复制的时候,只能排除一个目录不被复制,如果想排除两个或者多个目录的话,就需要使用rsync命令来实现了,看下面的例子方法二:
如果要排除/home/data目录下面的a、b、c、三个目录,同时拷贝其它所有目录,执行以下命令
rsync -av --exclude data/a --exclude data/b --exclude data/c data /bak
注意:--exclude后面的路径不能为绝对路径,必须为相对路径才可以,否则出错。
使用 find 加 cpio 进行拷贝:备注:此方法来自 Advanced Bash-Scripting Guide,需要了解的童鞋自己去参考了。用
过 find 的童鞋都知道,find 对文件的过滤那是非常强大的,配合 cpio
来进行目录的遍历拷贝就可以实现过滤指定的文件或文件夹,当然也可以做到只备份特定的文件或文件夹,你可以用 find
的各种过滤参数达到拷贝哪天的文件,拷贝近期更改的文件等特殊效果,而且 find 支持正则表达式,这种方式想比第一种使用 rsync
跳过文件的方式更加灵活,因此非常推荐使用此方式进行目录拷贝。cd dir1
find
. -regextype posix-egrep -mindepth 1 ! -regex ‘./(dev|tmp)($|/.*)’ !
-name Makefile -a ! -name .svn | cpio -admvp /home/dir2
小解释下:find
的 -regextype 参数指定正则表达式类型,posix-egrep 为 egrep 用的扩展正则表达式,-mindepth 使 find
的输出中不包括目录本身,-regex 参数指定过滤的文件的正则表达式,-regex
前面的感叹号表示跳过,’./(dev|tmp)($|/.*)’ 这个正则表达式即表示跳过目录中的第一层 dev 和 tmp
目录以及下面所有的文件和文件夹,最后两个 -name 指定要跳过文件名为 Makefile 和 .svn
的文件,这样在备份版本库的时候非常有用。
相关文章推荐
- linux下cp目录时排除一个或者多个目录的实现方法
- (转)linux下cp目录时排除一个或者多个目录的实现方法
- linux下cp目录时排除一个或者多个目录的方法
- linux下cp目录时排除一个或者多个目录的方法
- linux下cp目录时排除一个或者多个目录的实现方法
- Linux 下复制(cp)目录时排除一个或者多个目录的方法
- linux下cp目录时排除一个或者多个目录的实现方法
- 删除文件排除指定文件或者目录方法加实例精讲
- Linux 判断是否是一个目录还是一个文件的方法
- linux 复制一个文件到多个目录 使用echo 、xargs 、cp
- Linux下的一个快速跳转到上N层目录的简单方法
- 一天一个Linux基础命令之复制文件或目录命令cp
- Linux下的一个快速跳转到上N层目录的简单方法
- 在linux里建立一个快捷方式,连接到另一个目录的方法
- linux、shell脚本实例一“查找一个文件或者目录 找到了提示 没找到则输出未找到”
- My way on Linux - [Shell基础] - Bash Shell中判断文件、目录是否存在或者判断其是否具有某类属性(权限)的常用方法
- Linux 判断是否是一个目录还是一个文件的方法
- linux+笔记:linux下判断一个文件或者目录是否存在
- linux下scp远程拷贝包含空格的目录或者文件的解决方法
- linux cp的时候排除目录prune