如何追踪文件位置?

如何追踪文件位置?

我想以尽可能简单高效的方式跟踪系统中特定文件夹的路径。我的第一个假设是,我可以使用符号链接来实现这一点,但我看到了关于符号链接如何工作的矛盾信息。

很多问题都问如何获取符号链接目标的路径(答案是“使用greadlink”)。但我找不到任何问题询问如何获得当前的目标路径,因为我找到的所有答案似乎都只得到了原来的目标路径。

但是当我寻找找到当前目标路径的方法时,所有的答案似乎都在说这是不可能的,因为在目标移动后,符号链接会“断开”。我不明白他们为什么认为这个链接断开了。如果我将符号链接 B 链接到目标 A,然后将 A mv 到新位置,符号链接 B 仍然对我有效。它仍然显示 A 的更新内容,即使在移动 A 后对 A 进行了更改。在路径查找器中,在 B 的上下文菜单中选择“显示原始内容”会将我带到更新A 的路径。但是,“greadlink B”只指向 A 的原始位置,而不是当前位置。

虽然我确实特别提到了符号链接,但我更广泛、更重要的问题是如何在文件移动后获取其位置。到目前为止,我发现的最佳解决方案是以find某种方式使用,但当我尝试跟踪多个文件时,这太慢了。但 Path Finder 中的符号链接似乎可以有效地跟踪目标位置,所以我知道这一定是可能的。

答案1

感谢@grawity提醒我关于别名。我尝试使用别名而不是符号链接来跟踪文件位置。事实证明我可以使用以下脚本,它将返回当前的即使目标已经移动,仍会跟踪至目标的路径。

ResolveAlias.applescript

#!/usr/bin/osascript
on run argv
    tell application "Finder"
        set theItem to (POSIX file (item 1 of argv)) as alias
        if the kind of theItem is "alias" then
            get the POSIX path of (original item of theItem as text)
        end if
    end tell
end run

调用osascript "/path/to/ResolveAlias.applescript" "/path/to/alias"

相关内容