2013-05-01 44 views
1

在詹金斯的工作,我有一个生成步骤执行shell命令是这样的:如何使用詹金斯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是一个更好的选择。

+0

必须尝试这个问题的答案:http://stackoverflow.com/questions/4210042/exclude-directory-from-find-command – 2013-05-01 06:36:26

回答

1

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

有很多复制目录不包括svn文件的选项 - 在你的情况下,我会开始删除-r。

如果上述不起作用谷歌'复制文件没有svn目录'为很多不同的选项。

+0

即使我删除了-r,.svn文件夹仍然被复制,也许是因为它们是隐藏文件夹。 -prune也不工作。我放弃了使用rsync,这很容易。尝试不同的查找选项组合真的浪费时间和压抑,我不明智的选择这个解决方案。但是,多谢所有回复! – Kevin 2013-05-01 12:52:12