2017-08-18 8 views
0

与えられたファイル名の正規表現にマッチする多くのファイルに対してシェルコマンドを実行したいと思います。私は、引数でシェルコマンドを実行し、このコードスニペットを見つけました:Swiftのパターンでシェルコマンドを実行してください

func shell(_ arguments: [String] = []) -> String { 

    let task = Process() 
    task.launchPath = "/usr/bin/env" 
    task.arguments = arguments 

    let pipe = Pipe() 
    task.standardOutput = pipe 
    task.launch() 

    let data = pipe.fileHandleForReading.readDataToEndOfFile() 
    let output = String(data: data, encoding: .utf8) ?? "unknown" 

    return output 
} 

それは素晴らしい実行されますが、それはパラメータを解決しません:

shell(["ls", "~/Desktop/*.txt"]) 

*txtすべてのファイルを解決しません、それは*.txtというファイルのみを処理しようとします。 Processに設定する必要があるオプションはありますか?

ご協力いただきありがとうございます。

答えて

1

私はちょうど答えを見つけました! *と他のパターンの解決はシェルによって行われ、Processは与えられたコマンドだけを実行します。だから解決策は、シェルを作成し、そこにコマンドを実行することです:(コードでいくつかのクリーンアップが動作しますが、これは動作します)

関連する問題