Hey all, I need to delete all the files that starts with ABC. For this now i'm using Runtime.exec and passing the parameter "rm -r /usr/tmp/ABC*". But amazingly it does not delete the directories. Infact if i try to delete a directory in one attempt then it seems its ok like if i pass "rm -r /usr/tmp/ABC-123". Why the Runtime.exec() is not recognizing/allowing to pass wildcard characters? Or is there any other way to do so.
When you type a wildcard at a UNIX command prompt, it's the shell program (i.e., bash) that interprets it. When you use Runtime.exec() to execute rm, there's no shell involved. rm gets the asterisk character itself, and doesn't treat it as a special character.
Run a shell, and use the shell to run rm; i.e., like
I hope you just use "rm" as example to use System.exec, as it not portable to other OS systems. Using java.io.File#delete is more safe. Of course you will have to recurse and make sure all files are delete before a directory is to be removed as well.
subject: Passing wilcard * in Runtime.exec() command