怎样拷贝整个目录并且忽略部分文件及目录(包括windows)?

我有一个一个目录A,其中有一个子目录B,及文件C.log,我想把目录A下除了B及C.log的所以文件及目录拷贝到D目录,另外排除所有svn目录,请问这条语句该怎么写?

方法一:

find a ( -path a/b -o -path a/*.svn ) -prune -o -print |cpio -o > /tmp/a.cpio
    然后到tmp目录下
    cpio -i < a.cpio

方法二:

使用rsync命令实现了,非常感谢:

rsync -r --delete  --exclude=".svn"  --exclude="B" --exclude="C.log" /A/ /D

比cp命令好多了,另外排除的文件及目录还可以写到一个文件里:

rsync -r --delete  --exclude-from=rsync.exclude /A/ /D

rsync.exclude文件内容为:

1 .svn
2 B
3 C.log

rsync特别好的是还有window客户端,在window下也能实现同样的效果。

时间: 2024-11-07 18:51:11

怎样拷贝整个目录并且忽略部分文件及目录(包括windows)?的相关文章

《Linux学习并不难》文件目录管理(9):mv命令文件和目录改名、移动文件和目录路径

7.9  <Linux学习并不难>文件目录管理(9):mv命令文件和目录改名.移动文件和目录路径 使用mv命令可以对文件和目录更改名称以及移动文件和目录的路径. 命令语法: mv [选项] [源文件|目录] [目标文件|目录] 命令中各选项的含义如表所示. 选项 选项含义 -i 覆盖前询问 -f 覆盖前不询问 -n 不覆盖已存在的文件 例:将/root/pic目录下所有的后缀名为".png"的文件移动到/usr/local/share/pic目录下. [[email pro

设置SVN忽略文件和目录(文件夹)

在多数项目中你总会有文件和目录不需要进行版本控制.这可能包括一些由编译器生成的文件,*.obj,*.lst,或许是一个用于存放可执行程序的输出文件夹.只要你提交修改,TortoiseSVN 就会在提交对话框的文件列表中显示出未版本控制文件.当然你可以关闭这个显示,不过你可能会忘记添加新的源文件. 最好的避免类似问题的方法是添加参考文件到该项目的忽略列表.这样他们就永远不会出现在提交对话框中,而真正的未版本控制文件则仍然列出. 1.  方法一 在 Eclipse 中点击菜单 window -->

设置SVN忽略文件和目录

参考:http://blog.csdn.net/hemingwang0902/article/details/6904205 在多数项目中你总会有文件和目录不需要进行版本控制.这可能包括一些由编译器生成的文件,*.obj,*.lst,或许是一个用于存放可执行程序的输出文件夹.只要你提交修改,TortoiseSVN 就会在提交对话框的文件列表中显示出未版本控制文件.当然你可以关闭这个显示,不过你可能会忘记添加新的源文件. 最好的避免类似问题的方法是添加参考文件到该项目的忽略列表.这样他们就永远不会

.gitignore文件中添加忽略文件或者目录后,不起作用。

出现该问题放入原因: 在git库中已存在了这个文件,之前push提交过该文件. .gitignore文件只对还没有加入版本管理的文件起作用,如果之前已经用git把这些文件纳入了版本库,就不起作用了. 解决问题方式: 将需要忽略的文件先复制出来,然后删除项目目录下的这些需要忽略的文件.(如果是编译后的文件,直接删除就可以). 在.gitignore文件中添加对应的需要忽略的文件或者目录. 提交所做的修改到本地版本库,然后推送到远程的版本库. 文件前面的绿色对勾变成灰色的减号表明操作成功. 原文地址

Git设置文件或目录忽略跟踪的三种方式

1. 共享的忽略设置方式 本地仓库根目录,创建.gitignore文件,并编辑正则匹配需要忽略的文件或目录. .gitignore文件需要上传到仓库,同时会影响到他人,共享忽略设置 注意: .gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的. 添加忽略之后,已经提交到版本库中的文件是无法忽略的.只能clone到本地,删除后,再进行忽略. 2. 非共享的忽略设置 ① 编辑 .git/info/exclude 文件,设置

.gitignore排除(不忽略)二级以上目录下的文件或目录

在.gitignore中,结合使用/*和!filename的语法,可以达到除特定文件或目录外全部忽略的目的.但当希望不忽略的文件或目录在二级或多级目录下时,如果这样写 /* !/sub/subsub/  是不能达到预期效果的,这会导致根目录下的全部文件被忽略,包括/sub/subsub/.因为.gitignore语法中,!filename只能对同级的/*生效,因此如果要在根目录中排除多级目录中的文件,需要重复地指明每一级目录的忽略规则.下面以忽略根目录中的全部文件,但不忽略/1st/2nd/目录

Linux文件与目录管理命令总结

在Linux下对文件和目录的操作是学习linux的基础,文件的操作无非就是增删改查等等.对于目录的操作也是对目录的增删改查以及修改目录属性等操作.在了解目录管理前得先了解目录的结构.linux下的目录是树型结构,所有的目录都从根(/)开始,其他的文件系统以挂载的方式挂载到目录上去进行使用.访问目录时有相对路径和绝对路径之分. 相对路径:路径的写法不是由根写起的,而是在当前路径的基础之上的.例如:例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd .

Linux 文件与目录管理

我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /. 其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们. 在开始本教程前我们需要先知道什么是绝对路径与相对路径. 绝对路径:路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录. 相对路径:路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法啦! 处理目录的常用命令 接下来我们就来看几

【转】第七章、Linux 文件与目录管理

原文网址:http://vbird.dic.ksu.edu.tw/linux_basic/0220filemanager.php 第七章.Linux 文件与目录管理 最近升级日期:2009/08/26 在第六章我们认识了Linux系统下的文件权限概念以及目录的配置说明. 在这个章节当中,我们就直接来进一步的操作与管理文件与目录吧!包括在不同的目录间变换. 创建与删除目录.创建与删除文件,还有寻找文件.查阅文件内容等等, 都会在这个章节作个简单的介绍啊! 1. 目录与路径 1.1 相对路径与绝对路