如何使用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命令复制文件但不包括某些目录[重复]的主要内容,如果未能解决你的问题,请参考以下文章