如何追蹤文件位置?

如何追蹤文件位置?

我想以盡可能簡單有效的方式追蹤系統中特定資料夾的路徑。我的第一個假設是我可以使用符號連結來實現這一點,但我看到有關符號連結如何運作的相互矛盾的資訊。

很多問題都問如何取得符號連結目標的路徑(答案如「使用greadlink」)。但我找不到任何詢問如何獲得的問題目前的目標路徑,因為我找到的所有答案似乎都只得到原來的目標路徑。

但是,當我尋找一種方法來查找當前目標路徑時,所有答案似乎都在說這是不可能的,因為目標移動後,符號連結就會「損壞」。我不明白為什麼他們認為此連結已損壞。如果我將符號連結 B 指向目標 A,然後將 A 移到新位置,則符號連結 B 仍然對我有用。即使 A 移動後對 A 進行了更改,它仍然顯示 A 的更新內容。在「路徑查找器」中,在 B 的上下文選單中選擇「顯示原始檔案」會將我帶到更新A 的路徑。

雖然我確實特別提到了符號鏈接,但我更廣泛、更重要的問題是如何在移動文件後獲取文件的位置。到目前為止,我發現的最好的解決方案是以find某種方式使用,但是當我嘗試追蹤多個檔案時,這太慢了。但是路徑查找器中的符號連結似乎可以有效地追蹤目標位置,所以我知道這一定是可能的。

答案1

感謝@grawity 提醒我有關別名的信息。我嘗試使用別名而不是符號連結來追蹤文件位置。事實證明我可以使用以下腳本,它將返回目前的即使目標移動後,仍能到達目標的路徑。

解決別名.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"

相關內容