在命令行上查找转义的glob扩展工作;不在Java Runtime.exec中

在命令行上查找转义的glob扩展工作;不在Java Runtime.exec中,java,bash,find,exec,glob,Java,Bash,Find,Exec,Glob,我正在运行以下命令: find /tmp/thumbnailgenerator/processor -maxdepth 1 -amin +1 -type f -iname 'a*' -delete 当从命令行运行时,它会按预期工作。但是,当通过Runtime.getRuntime.execString命令在Java中作为单个命令运行时,文件不会被删除。是的,它们已经一分钟了。另外,当作为通过StringUtils.joincmdarray“”连接到上述字符串的命令数组cmdarray运行时,它

我正在运行以下命令:

find /tmp/thumbnailgenerator/processor -maxdepth 1 -amin +1 -type f -iname 'a*' -delete
当从命令行运行时,它会按预期工作。但是,当通过Runtime.getRuntime.execString命令在Java中作为单个命令运行时,文件不会被删除。是的,它们已经一分钟了。另外,当作为通过StringUtils.joincmdarray“”连接到上述字符串的命令数组cmdarray运行时,它仍然不起作用


我怀疑这与glob扩展有关,因为我知道使用Runtime.exec时的一个常见错误是假设它像bash一样进行glob扩展,但是删除*没有帮助,它仍然不会删除文件a。

这与bash v如何执行第一轮处理有关。执行,但不完全是全局扩展。删除文件名周围的“”,它应该可以工作。在bash中,使用这些引号可以防止bash扩展glob。然而,单引号对exec也没有特殊意义,因此它们也被原始地传递给find命令。你想看到一个*。在bash中,这意味着您必须键入“a*”。但在exec中,这意味着您必须键入a*,否则find将看到“a*”。

。。。它应该有效吗?你发布了问题和答案,但没有测试它?@AlexandreSantos它确实有效。我不想过于傲慢,以为阅读此解决方案的每个人都不会做任何其他错误。