Symlink
如何使連結具有與目標文件相同的時間戳
假設你有
file
一個給定的文件mtime
。如果我創建一個通過符號連結sym
指向的符號連結,它本身會得到一個與創建時間相對應的-stamp,這與of 不同。file``ln -s``mtime``symlink``mtime``file
那麼有沒有辦法創建一個符號連結,使其與
mtime
它指向的文件相同?這個問題的背景是這個腳本,其中創建了一個指向雲鏡像的n個最新文件的連結目錄。現在,例如,如果我
ls -lt
在此current
目錄中執行此操作,它不會顯示創建實際文件的日期,而是顯示創建符號連結的日期。但我想查看文件創建日期。編輯 在我原來的文章中,我錯誤地要求 ctime(我在上面更改了它),但是問題應該是關於 mtime。感謝@ilkkachu 指出這一點。
你的意思是ctime還是mtime?Ctime 是文件元數據(inode 內容)或文件內容的最新更改時間。它會在寫入時更新,但也會在權限發生更改時更新。mtime 是最近一次寫入文件數據的時間,可以用 改變
touch
,而 ctime 通常不能。因為它可以為副本重置,所以 mtime 通常是更有用的一個。它也是
ls -lt
顯示的(您需要添加-c
以顯示 ctime)。您可以
touch -h
用來更改符號連結的 mtime:$ ls -lt total 4 lrwxrwxrwx 1 ilkkachu ilkkachu 9 Sep 4 15:10 link.txt -> hello.txt -rw-r--r-- 1 ilkkachu ilkkachu 6 Dec 31 1999 hello.txt $ touch -h -r hello.txt link.txt $ ls -lt total 4 -rw-r--r-- 1 ilkkachu ilkkachu 6 Dec 31 1999 hello.txt lrwxrwxrwx 1 ilkkachu ilkkachu 9 Dec 31 1999 link.txt -> hello.txt
但這仍然需要手動完成,如果目標文件更改,它不會自動更新。但是您可以使用
ls -L
它來列印目標文件的詳細資訊,而不是連結本身:$ touch hello.txt $ ls -L -lt total 8 -rw-r--r-- 1 ilkkachu ilkkachu 6 Sep 4 15:12 hello.txt -rw-r--r-- 1 ilkkachu ilkkachu 6 Sep 4 15:12 link.txt
當然,它也隱藏了它是一個連結開始的事實。
如果您需要混合輸出,並顯示連結名稱和目標以及指向文件的日期和所有權,您可能需要使用 Perl 之類的東西來創建該列表。