如何列出符號連結目標文件的屬性(尤其是日期)?
鍵入時
ls -la
,我們得到目前目錄中的文件列表,符號連結也列印了它們的目標文件。顯示符號連結時,shell 會列印符號連結本身的屬性(尤其是日期)。
是否有列印目標屬性的選項?
-dLl
向 ls添加選項。
-L
告訴ls
做顯示目標。-d
告訴它不要進入目錄(只有當文件是目錄時才會有所不同)。-l
說要做一個很長的清單(詳細)。
大多數係統呼叫和應用程序,當給定符號連結的路徑時,會在符號連結的目標上執行它們的操作。值得注意的例外是那些對目錄條目而不是文件(例如
unlink()
/rm
、link()
/symlink()
/ )進行操作的例外ln
。在獲取文件元數據資訊時,有兩個單獨的系統呼叫:(
lstat()
對符號連結本身進行stat()
操作),(對符號連結的目標進行操作)。statx()
對於Linux 上的較新版本,它帶有一個AT_SYMLINK_NOFOLLOW
標誌。另請參閱listxattr()
/llistxattr()
,getxattr()
/lgetxattr()
以了解擴展屬性。當涉及到包裝這些的實用程序時,預設值取決於實用程序,如果有的話,更改操作模式的選項也取決於實現。
ls
預設情況下,對作為參數給出的文件的目標進行操作,除非傳遞了任何-d
,-l
,-F
,-g
,-o
,-n
選項,在這種情況下,它對符號連結本身進行操作(使用lstat()
而不是stat()
或statx()
與AT_SYMLINK_NOFOLLOW
標誌一起使用)。如果您想使用其中一個選項但仍想遵循符號連結,則可以傳遞該
-H
選項。ls -ldH -- "$file"
符號連結解析後將報告有關文件的資訊。
ls
還有一個-L
選項告訴它解析所有符號連結,而不僅僅是作為參數給出的文件的符號連結。例如,ls -Ll /symlink-to-dir
將解析/symlink-to-dir
到它連結到的目錄,並列出其內容,並且對於其中的每個符號連結,還將列對外連結接目標處的資訊。它還影響如何使用-R
.對於其他工具:
Command | default | change with ----------------------+-----------+-------------- IRIX stat | target | -L zsh stat | target | -L GNU stat | symlink | -L BSD stat | symlink | -L busybox stat | symlink | -L AIX istat | target | none GNU date -r | target | none GNU find -printf | symlink | -follow/-L/-H Linux attr | symlink | -L Linux getfattr | target | -h Linux getfacl | target | -P
一些範例,具體為修改時間:
$ date -r link +%FT%T.%N%z # GNU date 2020-03-19T17:57:11.277584965+0000 $ zmodload zsh/stat $ stat -F %FT%T.%N%z +mtime link 2020-03-19T17:57:11.277584965+0000 $ gstat -Lc %y link # GNU stat 2020-03-19 17:57:11.277584965 +0000 $ ls -lHd --full-time link # GNU ls drwxr-xr-x 23 root root 29 2020-03-19 17:57:11.277584965 +0000 link/ $ find -H link -prune -printf '%TFT%TT%Tz\n' # GNU find 2020-03-19T17:57:11.2775849650+0000