Linux

從根目錄開始列印完整的符號連結資訊

  • April 23, 2022

我們有興趣列印從根目錄開始的所有符號連結資訊。我們希望以以下格式列印資訊:

symbolic name -> actual name $$ Notice the same line $$

我們嘗試了以下方法,它為我們提供了符號名稱和實際名稱,但在不同的行

find . -type l -print -exec readlink -f {} \;

我不認為你離得很遠。使用-printf代替-print(假設你的版本find有它)你得到這個

find / -type l -printf "%p -> " -exec readlink -f {} \;

範例輸出

/bin/apropos -> /bin/whatis
/bin/awk -> /bin/gawk
/bin/bzcmp -> /bin/bzdiff

以供參考,

ls -gl /bin/apropos
lrwxrwxrwx 1 roaima 10 Mar 28 20:15 /bin/apropos -> whatis

您將獲得斷開連結-printf的過度行(沒有換行符)

zsh

for link (**/*(ND@^-@)) print -r -- "$link -> $link:P"

where@^-@將 glob 擴展限制為未損壞的符號連結文件(目標可訪問的符號連結,確定其規範路徑的必要條件,相當於 GNUfind-type l ! -xtype l)。$link:P給對外連結接的真實路徑(符號連結解析後的所有組件的規範絕對路徑,類似於realpath()標準函式所做的,或 GNU readlink -f)。

引用自:https://unix.stackexchange.com/questions/700134