java程序中调用带通配符*的unix系统命令

来源:百度知道 编辑:UC知道 时间:2024/09/22 01:52:36
Process proc = Runtime.getRuntime().exec("cmd");其中cmd是unix的命令行,例如 rm -f lin/test
我遇到的问题是如果命令行带通配符*就会有问题。
例如:我的目录结果:
lin/testA
lin/testB
lin/test*
命令行如果是rm -f lin/testA, 那么会delete掉testA,是没有问题的。
命令行如果是rm -f lin/test*, 那么会delete掉test*,但是我想delete掉的是所以以test开头的文件。
请问怎么处理。
谢谢

*这个已经是很顽固的问题了,如果不爱用ListFile的话

可以变通下

find .-name "test" -exec rm -f {} \;

由于在linux环境下,我们一般使用bash shell调用这些命令, 而其中的一些符号 诸如:
*, ?, >, < , | 这样的符号是通过/bin/bash -c来做解释后再传递给 所调用的命令
/bin/bash -c 这个参数已经作为默认命令,在系统启动时加载到运行环境中,所以我们敲以上命令的时候可以省略
但对于java的Process来说,不会识别这些符号,因此我们必须强制调用/bin/bash -c来帮我们做符号解释:
http://tuhaitao.iteye.com/blog/1047820

*应该需要转义吧,加个转义符试试

2