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