如何使用Jenkins shell命令复制文件但不包括某些目录[重复]

Posted

技术标签:

【中文标题】如何使用Jenkins shell命令复制文件但不包括某些目录[重复]【英文标题】:How to use Jenkins shell command to copy files but excluding some directories [duplicate] 【发布时间】:2013-04-25 04:07:25 【问题描述】:

在 Jenkins 作业中,我有一个构建步骤来执行这样的 shell 命令:

rm -rf /var/www/www.example.com/* 
find . \( -not -path '*/.svn/*' \) -exec cp -rv  /var/www/www.example.com \;

但是,每次这些文件夹中的文件(例如 .../classes/.svn/props)仍然被复制。

我查看了 find 命令手册,该命令的格式似乎正确。那么为什么它不起作用呢?另外在末尾加上分号的目的是什么?我从某个地方复制了这个:-)

我在这上面花了几个小时,但仍然无法正常工作,太痛苦了。也许使用 rsync 是更好的选择。

【问题讨论】:

不得不尝试这个问题的答案:***.com/questions/4210042/… 【参考方案1】:

您在 find 命令中忽略了 .svn 目录,但之后您会递归复制目录,因此如果目录包含 .svn 目录,您仍将复制它。 (而且您的命令确实执行了很多重复副本)

除了 svn 文件之外,复制目录有很多选项 - 在您的情况下,我将从删除 -r 开始。

如果上述方法不起作用,请使用谷歌“复制没有 svn 目录的文件”以获得许多不同的选项。

【讨论】:

好吧,即使我删除了 -r,.svn 文件夹仍然被复制,可能是因为它们是隐藏文件夹。 -prune 也不起作用。我放弃了这个,而是使用更容易的 rsync。尝试不同的查找选项组合确实是浪费时间和令人沮丧,在我的情况下选择这个解决方案是不明智的。但是感谢所有回复的人!

以上是关于如何使用Jenkins shell命令复制文件但不包括某些目录[重复]的主要内容,如果未能解决你的问题,请参考以下文章

linux如何复制文件夹下所有文件但不复制子目录

jenkins中使用shell的try命令

如何忽略错误但不跳过 redshift 复制命令中的行

大坑记录 - shell脚本删除操作

如何在 shell 命令中发送 Jenkins 版本号作为参数,该命令将在构建结束后执行

如何使用shell复制和重命名多个文件