[英]find with escaped glob expansion works on command line; not in Java Runtime.exec
我正在運行以下命令:
find /tmp/thumbnailgenerator/processor -maxdepth 1 -amin +1 -type f -iname 'a*' -delete
從命令行運行時,它可以按預期工作。 但是,當通過Runtime.getRuntime.exec(String command)
在Java中以單個命令運行時,不會刪除文件。 (是的,它們已經一分鍾了。)同樣,當作為通過StringUtils.join(cmdarray, ' ')
連接到上述字符串的命令數組cmdarray
運行時,它仍然不起作用。
我懷疑這與glob擴展有關,因為我知道使用Runtime.exec
犯的錯誤是假定它像bash一樣進行glob擴展,但是刪除*
並沒有幫助(它仍然不會刪除文件a
)。
這與bash v.exec如何執行第一輪處理有關,而與glob擴展無關。 刪除文件名周圍的' '
,它應該可以工作。 在bash中,使用這些引號可以防止 bash擴展全局。 但是,單引號對exec也沒有特殊含義,因此它們也將原始傳遞給find命令。 您想找到a*
。 在bash中,這意味着您必須輸入'a*'
。 但是在exec中,這意味着您必須鍵入a*
,否則find將看到'a*'
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.