在文件夹中搜索具有匹配前缀的文件,并在applescript中执行操作
我有成千上万的PDF文件,我想找到符合某些特征的文件并执行一个操作(合并成PDF) 例如,我有如下文件:在文件夹中搜索具有匹配前缀的文件,并在applescript中执行操作,applescript,Applescript,我有成千上万的PDF文件,我想找到符合某些特征的文件并执行一个操作(合并成PDF) 例如,我有如下文件: filegroup1_abc.pdf filegroup2_xyz.pdf filegroup3_qrs.pdf filegroup3_lmn.pdf 我想找到每个具有相同前缀的文件,“filegroup1”,并将它们合并到一个PDF中,然后找到下一个匹配项(filegroup2),然后是下一个,等等 因此,在我上面的示例中,最后两个将合并为一个新的PDF,因为它们有“Filegroup3
filegroup1_abc.pdf
filegroup2_xyz.pdf
filegroup3_qrs.pdf
filegroup3_lmn.pdf
我想找到每个具有相同前缀的文件,“filegroup1”,并将它们合并到一个PDF中,然后找到下一个匹配项(filegroup2),然后是下一个,等等
因此,在我上面的示例中,最后两个将合并为一个新的PDF,因为它们有“Filegroup3”前缀
我找到了一个使用applescript合并PDF的脚本;所以我的主要问题是如何搜索文件夹,找到那些文件,然后对它们执行操作。但是,“filetype1”的模式未知,因此脚本首先需要检查每个文件,并在文件名中的前X个字符匹配时进行比较。在本例中,前22个字符是相同的,表示文件之间的关系
另外,我试图在applescript中实现这一点,但使用其他方法可能更容易实现
--choose working folder
set ff to quoted form of POSIX path of (choose folder)
try
--returns files matching names as return-delimited text, filter to list of "paragraphs"
-- using built-in AS object text awareness
[编辑]
--OLD; incorrect:
--set allABCs to every paragraph of (do shell script "cd " & ff & ";" & "ls filegroup*_qrs.pdf")
-- new and improved:
set allABCs to every paragraph of (do shell script "cd " & ff & ";" & "ls filegroup1_???.pdf")
--that matches only 3-character strings. The following
-- matches any number of characters between _ and .pdf:
--set allABCs to every paragraph of (do shell script "cd " & ff & ";" & "ls filegroup1_*.pdf")
on error--it's in a try because if you mistakedly look for files that aren't there,
-- it will return an error. As an aside, doing 'ls' and getting folders
-- returns extra empty strings -- just a cautionary note that probably doesn't matter here
return {}
end try
--还有一个您可能不需要的注意事项--您可能需要对结果进行排序以正确排序文件,如果这对您很重要的话看起来applescript支持正则表达式:谢谢@eebbesen,我需要它;但也许我的问题更为基本,我如何找到第一个X字符匹配的每个文件并对其执行操作?谢谢@CRGreen,这让我更接近了,但我需要知道通配符匹配的时间,而不仅仅是生成一个列表。因此,在
ls filegroup*_qrs.pdf
中,只要返回的列表中的通配符相同,我就需要对这些匹配的文件执行操作。好的,@nocabt我已经更新了代码。但“通配符何时匹配”应该无关紧要。您应该能够为每个组生成要处理的每个文件列表。你可以通过算法或一次一个来组合这个组,只要适合你。