linux复制整个目录下文件,关于linux:复制整个目录(不包括文件)

众所周知,cp -r source_dir aimed_new_directory使用新名称创建源目录的副本。 现在,我想做同样的事情,但要排除特定的文件。 我在这里使用tar和rsync找到了一些相关的答案,但是在这些解决方案中,我需要首先创建目标目录(使用mkdir)。

老实说,我进行了很多搜索,但没有找到我想要的。

到目前为止,我得到的最好的是:

tar -c --exclude=\*.dll --exclude=\*.exe sourceDir | tar -x -C destDir

(摘自http://www.linuxquestions.org/questions/programming-9/how-to-copy-an-entire-directory-structure-except-certain-files-385321/)

如果您有binutils,则可以使用find过滤下一个cpio复制(并创建目录):

find  \( ! -name *.dll \) -a \( ! -name *.exe \) | cpio -dumpv

如果目录不是很大,我通常会这样写:

src=path/to/source/directory

dst=path/to/destination/directory

find $src -type f | while read f ; do mkdir -p"$dst/`dirname $f`"; cp"$f""$dst/$f" ; done

在这里,我们列出了$src中的所有常规文件,遍历此列表,并为每个文件在$dst中建立目录(如果尚不存在)(mkdir的-p选项),然后将文件复制到该目录 。

上面的命令将复制所有文件。 最后,只需使用

find $src -type f | grep -v whatever | while ...... # same as above

过滤掉不需要的文件(例如\.bak$,\.orig$或您不想复制的任何文件)。

通过使用'grep -v'->排除文件来尝试此操作

cp `ls | grep -v `

这不会复制子目录。.您需要相应地修改命令。

对不起,不理解命令。 我在哪里放置源目录?

@ dganesh2002在这里将所有文件从当前目录复制到目标目录。 如果没有子目录,文件名没有空格,并且当前目录中的文件数不是太大,则单击

非常感谢dganesh2002和@atycnth。 尽管我仍然需要自己创建dest_dir,但我喜欢这种解决方案,因为它的机制很简单,而且我很容易记住。

将所有排除文件移至主目录或其他目录,将包含所有剩余文件的目录复制到目标文件夹,然后还原所有排除文件。

#cd mydirectory

#mv exclude1 exclude2 /home/

#cp mydirectory destination_folder/

#cd /home/

#mv eclude1 exclude2 mydirectory/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值