簡體   English   中英

在命令行中找到帶有轉義的glob擴展的作品; 不在Java Runtime.exec中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM