2013-04-16 237 views
1

我创建了一个小的applescript,用于查找与某个文件夹中的多个字符串匹配的文件,当它们找到时,它将返回该文件的路径。在AppleScript语言写的,它看起来像这样:shell的shell脚本

集filesExist到的(在文件夹中的所有文件pathUnsorted名称以(项目theWords 1)和名称启动包含(项目theWords 2)和名称中包含路径(项目3),名称包含(第4项)和名称包含(第5项))

现在,我需要将其转换为shell命令,因为这些命令可以在此命令内运行:

设置文件存在做shell脚本“(shell逗号nd去这里)“

不幸的是,我不知道如何在shell命令中做到这一点......有人可以帮助我?

+0

为什么在applescript中使用shell命令而不是常规的applescript命令?你能从中得到什么好处?请解释您需要达到的目标,我们可以帮助您实现目标。 – regulus6633

+0

大多数速度。当我必须查找一个文件并且有1500个其他文件时,它可能需要很长时间。在谷歌搜索后,我发现我可以使用系统事件来进行搜索,但它也证明是太慢了。有人建议壳可以快很多 – ruben1691

+0

好点! Finder搜索大量文件的速度很慢。 – regulus6633

回答

1

假设pathUnsorted已经是POSIX路径:

do shell script "ls " & quoted form of (pathUnsorted & "/" & (item 1 of theWords)) & "*" & ¬ 
    " | grep " & quoted form of (item 2 of theWords) & ¬ 
    " | grep " & quoted form of (item 3 of theWords) & ¬ 
    " | grep " & quoted form of (item 4 of theWords) & ¬ 
    " | grep " & quoted form of (item 5 of theWords) 

这是理论上可以构造一个正则表达式,将匹配一杆所有正确的文件,但这是简单。

+0

谢谢!对不起,我花了这么长时间,但我遇到了一些电脑问题......但我还有一个问题:如果我想在那里放置一个或一个声明怎么办?像这样:将filesExist设置为路径(path文件中的每个文件,其名称以(theWords的第1项)开头,name包含(theWords的第2项),name包含(theWords的第3项),name包含)和名称包含(第5项)和(名称包含acr1或名称包含acr2)) – ruben1691