搜索具有匹配前缀的文件的文件夹,并在applescript中执行操作

时间:2014-01-04 20:08:44

标签: applescript

我有成千上万的PDF文件,我想找到符合某些特征并执行操作的文件(合并为PDF格式)

例如,我有以下文件:

filegroup1_abc.pdf
filegroup2_xyz.pdf
filegroup3_qrs.pdf
filegroup3_lmn.pdf

我想找到每个具有相同前缀的文件,“filegroup1”并将它们合并为一个PDF,然后找到下一个匹配(filegroup2),然后找到下一个匹配等...

因此,在上面的示例中,最后两个将合并为一个新PDF,因为它们具有“Filegroup3”前缀。

我找到了一个使用applescript合并PDF的脚本;所以我的主要问题是如何搜索文件夹,找到这些文件,然后对它们执行操作。但是“filetype1”的模式是未知的,因此脚本首先需要检查每个文件并比较文件名中第一个X个字符匹配的时间。在这种情况下,前22个字符是相同的,表示文件之间的关系。

另外,我正在尝试使用applescript执行此操作,但使用其他方法可能更容易。

1 个答案:

答案 0 :(得分:2)

--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

- 还有一个您可能不需要的注意事项 - 您可能需要对结果进行排序以正确排序文件,如果这对您很重要