`find <dir> type -f`等效于Swift-Cocoa?

时间:2016-11-08 23:25:09

标签: swift cocoa macos-sierra

我目前正在将C ++命令行工具移植到Cocoa-Application格式,以使其更方便,并将其与我最近制作的其他几个实用程序和小程序捆绑在一起。有问题的工具需要搜索特定目录及其所有子目录,以便它可以创建现有文件列表以供其余的执行。

在C ++中,我可以通过调用运行命令的bash脚本轻松完成此任务:files=$(find <dir> type -f); echo "$files" > ./<reference file>。现在我想知道是否有任何等效的命令,以便我可以在swift中执行相同的操作,将文件保存在bundle中,或者从&#34; Resources&#34;运行脚本。目录,以便我不必通过将二进制文件安装到设置位置来卷积,然后使用Swift调用该二进制文件来调用脚本。 如果可能的话,也可以通过系统调用直接从Swift内部运行该命令。

BTW我在XCode 8.0上使用Swift 3.0,如果它是相关的。谢谢!

2 个答案:

答案 0 :(得分:1)

在Swift中运行子进程的方法是类NSTask,shell脚本可以在bindle中的资源中使用NSBundle来查找它的路径。

然而,最好使用NSFileManager在Swift中重写该命令以通过文件系统进行fgo

答案 1 :(得分:0)

你可以做类似的事情:

import Foundation

for arg in CommandLine.arguments.dropFirst() {
    let fileManager = FileManager()
    let en=fileManager.enumerator(atPath: arg)
    while let fileName = en?.nextObject() as? String {
//      if fileName.hasSuffix("txt") {  // if you want to test for file extension
            print(arg+"/"+fileName)
    //  }
    }
}