Groovy execute “cp *” shell command

前端 未结 2 600
Happy的楠姐
Happy的楠姐 2021-02-01 23:49

I want to copy text files and only text files from src/ to dst/

groovy:000> \"cp src/*.txt dst/\".execute().text       
===> 
groovy:000> 
<         


        
相关标签:
2条回答
  • 2021-02-02 00:01

    Wildcard expansion is performed by the shell, not by cp (or groovy). Your first example is trying to copy a file named *. You could make your command "sh -c 'cp ...'"

    0 讨论(0)
  • 2021-02-02 00:02

    Thanks tedu for getting me half way there.

    I believe the reason that his solution didn't work was because of an 'escaping' issue.

    For instance...

    "sh -c 'ls'".execute()
    

    works. But...

    "sh -c 'ls '".execute()
    

    does not.

    There is probably a way to escape it properly in line there but the workaround I'm using is to pass a string array to Runtime.getRuntime().exec

    command = ["sh", "-c", "cp src/*.txt dst/"]
    Runtime.getRuntime().exec((String[]) command.toArray())
    

    works beautifully!

    0 讨论(0)
提交回复
热议问题