在终端中使用 find 命令排除库文件夹–OS X Mavericks

Exclude Library folder from being searched with find command in Terminal–OS X Mavericks

我正在尝试创建一个 AppleScript 来搜索用户主文件夹中名为 keyPRO 的特定文件夹。我在我的 AppleScript 中使用以下代码来执行此操作:

do shell script "find ~/ -name 'keyPRO'"

(“~/”表示在当前用户的主文件夹中搜索。)

令人恼火的是,每次我 运行 它时,终端都会在我的库文件夹中搜索,这会导致 "Permission denied" 错误以及其他随机内容出现。

有没有办法将用户的 Library 文件夹排除在搜索范围之外?

最初用 or, more specficially, would have gotten it more attention ( 标记您的问题在这里不起作用 - AppleScript 的 do shell script 不会打开终端 window,它只会创建一个 shell 子进程。)。

do shell script "find ~ -path ~/Library -prune -o -name 'keyPRO' -print"

将从您的查找命令中排除 ~/Library

从 shell、运行 man find 获取有关 find 命令的更多信息。

但是,请注意,当您使用 AppleScript 的 do shell script 时,您通常不会看到警告或错误消息,除非 shell 命令 失败 (报告一个非零退出代码)作为一个整体(在这种情况下,AppleScript 会抛出一个错误,并以 shell 错误消息作为描述)。

警告和错误消息被发送到 stderr 流,而 do shell script 默认情况下仅捕获 stdout.