找不到正确的参数,rsync无法传递给Java Runtime exec以忽略文件夹

找不到正确的参数,rsync无法传递给Java Runtime exec以忽略文件夹,java,unix,rsync,runtime.exec,Java,Unix,Rsync,Runtime.exec,我想使用Runtime.exec()从Java调用rsync,并忽略隐藏的文件/文件夹。这个命令很简单,在命令行中就像一个符咒 rsync -r --exclude=".*" source destination 我已经尝试了许多不同的组合,将这些参数正确地分解为字符串[]传递给exec()。我失败了,我可能快要失去理智了 我尝试过的一些例子 String[]{ "rsync", "-r", "--exclude", "=", ".*", source, destination}); Stri

我想使用Runtime.exec()从Java调用rsync,并忽略隐藏的文件/文件夹。这个命令很简单,在命令行中就像一个符咒

rsync -r --exclude=".*" source destination
我已经尝试了许多不同的组合,将这些参数正确地分解为字符串[]传递给exec()。我失败了,我可能快要失去理智了

我尝试过的一些例子

String[]{ "rsync", "-r", "--exclude", "=", ".*", source, destination});
String[]{ "rsync", "-r", "--exclude", "=", "\".*\"", source, destination});
String[]{ "rsync", "-r", "--exclude=\".*\"", source, destination});
大多数情况下,我最终会遇到一个错误(即“由于错误导致的部分传输”),传输完成,但包括隐藏的文件/文件夹

如前所述,
“*”
由shell进行评估。最好将所有选项放在一个文件中,然后执行
rsync@myfile


顺便说一句,我想知道原始命令是否排除子目录中的
*
目录。

您在Windows或Unix上遇到过此问题吗?Unix上的
exclude=“.*”
部分通常由shell处理,而不是程序本身。在这种情况下,您可以在执行命令之前运行
sh-c
。@Alex对不起,我应该指定-这是在运行Ubuntu的计算机上。您是否尝试过“-exclude='.*'”或“-exclude=.\*”?它可能解决了shell globbing.interest问题-我试图排除.svn目录。必须检查并确保它们在所有级别都被排除,答案是肯定的,它确实排除了子目录中的隐藏项;一个人变得偏执。