Linux

查找最長的文件名

  • June 5, 2021

我必須在一個充滿符號連結的文件夾中找到包含最長文件夾名稱的符號連結。到目前為止,我有這個:

find <folder> -type l -printf "%l\n"

我想知道是否有任何方法可以在搜尋時保存文件夾名稱,例如以下虛擬碼:

if [length > max]
{
 max = length
 var = link
}

謝謝 :)

find /path/to/base -type l | awk -F/ 'BEGIN {maxlength = 0; longest = "" } length( $NF ) > maxlength { maxlength = length( $NF ); longest = $NF } END { print "longest was", longest, "at", maxlength, "characters." }'

為了使awk更具可讀性:

BEGIN {
  maxlength = 0
  longest = ""
} 

length( $NF ) > maxlength { 
  maxlength = length( $NF )
  longest = $NF
} 
END { 
  print "longest was", longest, "at", maxlength, "characters." 
}

awk擅長處理分隔數據。由於路徑由/s 分隔,我們將其用作欄位分隔符(使用-F開關),跟踪我們在longest變數中看到的最長名稱,以及它在變數中的長度maxlength。如果沒有找到連結,我將留給讀者作為練習,進行一些護理和餵養以使輸出保持正常。

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