Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在文件夹中搜索具有匹配前缀的文件,并在applescript中执行操作_Applescript - Fatal编程技术网

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

在文件夹中搜索具有匹配前缀的文件,并在applescript中执行操作,applescript,Applescript,我有成千上万的PDF文件,我想找到符合某些特征的文件并执行一个操作(合并成PDF) 例如,我有如下文件: filegroup1_abc.pdf filegroup2_xyz.pdf filegroup3_qrs.pdf filegroup3_lmn.pdf 我想找到每个具有相同前缀的文件,“filegroup1”,并将它们合并到一个PDF中,然后找到下一个匹配项(filegroup2),然后是下一个,等等 因此,在我上面的示例中,最后两个将合并为一个新的PDF,因为它们有“Filegroup3

我有成千上万的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中实现这一点,但使用其他方法可能更容易实现

--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我已经更新了代码。但“通配符何时匹配”应该无关紧要。您应该能够为每个组生成要处理的每个文件列表。你可以通过算法或一次一个来组合这个组,只要适合你。