【问题标题】:How to use Jenkins shell command to copy files but excluding some directories [duplicate]如何使用Jenkins shell命令复制文件但不包括某些目录[重复]
【发布时间】: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 是更好的选择。

【问题讨论】:

标签: linux shell jenkins command continuous-integration


【解决方案1】:

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

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

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

【讨论】:

  • 好吧,即使我删除了 -r,.svn 文件夹仍然被复制,可能是因为它们是隐藏文件夹。 -prune 也不起作用。我放弃了这个,而是使用更容易的 rsync。尝试不同的查找选项组合确实是浪费时间和令人沮丧,在我的情况下选择这个解决方案是不明智的。但是感谢所有回复的人!
猜你喜欢
  • 2010-11-02
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
  • 2010-10-03
  • 2011-02-21
  • 2011-01-30
  • 1970-01-01
相关资源
最近更新 更多