2015-09-24 42 views
0

我需要通過進入編程語言來執行這種命令:如何在Go中使用多個iname匹配器執行查找命令?

find /some/dir/path -type f \(-iname \*.zip -o -iname \*.tar -o -iname \*.rar \)

我發現exec.Command並試圖執行find命令, 例如各種方式

exec.Command("find", dir, "-type", "f", "\\(-iname \\*.zip -o -iname \\*.tar -o -iname \\*.rar \\)") 
exec.Command("find", dir, "-type", "f", "-iname", "*.zip", "-o", "-iname", "*.tar", "-o", "-iname", "*.rar") 
exec.Command("find", dir, "-type", "f", "\\(", "-iname", "\\*.zip", "-o", "-iname", "\\*.tar", "-o", "-iname", "\\*.rar", "\\)") 

以上都不適合我。有沒有辦法做到這一點,或者我只需要在Go中發佈3個單獨的查找命令?

+3

如果您嘗試查找具有特定文件擴展名的文件,請考慮使用[Walk](http://godoc.org/path/filepath#Walk)而不是執行命令。 –

+0

這個問題有什麼問題?爲什麼我收到一個downvote? – josiah

+1

基本問題有時會在這裏得到解決。這也是一個常見的錯誤,但很難搜索。不要擔心,有一個upvote! – JimB

回答

1

exec.Command不是shell,所以你不需要在命令中轉義特殊字符。按照您希望通過命令處理的方式傳遞每個參數。

exec.Command("find", dir, "-type", "f", "(", "-iname", "*.zip", "-o", "-iname", "*.tar", "-o", "-iname", "*.rar", ")") 
相關問題