Applescript:重复声明以删除文件(并保留最少数量的文件)

Applescript: Repeat statments to remove files (and keeping a minimum number of them)

我在现有文件夹中有一堆文件,并尝试使用 Automator 首先生成文件列表,按名称降序排列,然后使用 Applescript 按顺序删除最旧的 2 个文件在该文件夹中维护总共 4 个文件。

下面是我使用的代码:

on run {input, parameters}
    if not (count input) > 4 then return
    try
        repeat with i in items -2 thru -1 of input
            # To move to Trash, use Finder.
            tell application "Finder" to delete alias (i as text)
        end repeat
    end try
end run

它运行良好,但当我在该文件夹中总共有 5 个文件时出现问题;该脚本会丢弃最旧的 2 个文件,我最终会得到总共 3 个文件。我如何设置我的 ifrepeat 语句,以便我可以始终维护总共 4 个文件,并简单地丢弃该文件夹中最旧的额外文件的数量?

简单算法

  • 数文件数减4
  • 如果结果小于 1 则中止脚本
  • 在循环中向后删除文件

on run {input, parameters}
    set numberOfFilesToDelete to (count input) - 4
    if numberOfFilesToDelete < 1 then return
    repeat with i from 1 to numberOfFilesToDelete
        tell application "Finder" to delete item -i of input
    end repeat
    return input -- Delete this line if there is no subsequent action
end run