如何在mac os x中按内容查找文件?

时间:2016-03-18 04:15:23

标签: macos qt applescript

我想查找内容与给定字符串匹配的给定位置的文件。例如,桌面文件夹(或任何地方)内有很多文件,如* .pdf,* .rtf,* .doc,* .txt,* .html等。系统将提示用户输入字符串thistext并选择位置/Users/UserName/Desktop。我想从此位置获取其内容包含thistext的文件列表。我找到了一个命令实用程序mdfind,但它也返回了名称包含thistext的文件。我不希望这些文件出现在结果列表中,我只想要内容为thistext的文件。我使用了grep,但它对我不起作用。有没有办法自定义grepmdfind命令为我工作?或者,如果有任何AppleScript可用于执行此类任务?

2 个答案:

答案 0 :(得分:1)

我认为上面的答案中存在一些语法错误。 我刚用AppleScript测试过它,它在Yosemite 10.10.5中适用于我:

set textToSearchFor to "YourTextHere"
set searchDir to "~/Documents/Test/"

set cmdStr to "mdfind 'kMDItemTextContent == \"*" & textToSearchFor & "*\"cd' -onlyin " & searchDir
set lstFiles to (do shell script cmdStr)
log lstFiles

结果: (*/Users/UserName/Documents/Test/PDF_Log.txt*)

答案 1 :(得分:0)

您可以指定仅检查每个文件的文本内容的查询,如下所示:

mdfind -onlyin ~/Desktop 'kMDItemTextContent == *thistext* cdw'

查询字符串末尾的cdw表示比较应忽略 c ase, d iacritics和 w 宽度(主要与具有亚洲字符的文本相关)。

此外,如果您是从应用程序执行此操作,则不应将mdfind命令作为子进程调用。您应该使用NSMetadataQuery类在您的应用中执行此操作。