尋找目錄和子目錄中最大檔案的最快方法

尋找目錄和子目錄中最大檔案的最快方法

我需要找到當前目錄和後續目錄中最大的檔案。我試過

ls -Rlh | awk '{print $3 " " $5 " " $9}' 

但不知道是否可以,如何排序並選擇最大的文件。

答案1

GNUfind+sort+head解決方案(對於任何目錄深度等級),假設檔案路徑不包含換行符:

find . -type f -printf "%s %p\n" | sort -nr | head -1
  • %s- 指向檔案大小的格式說明符(以位元組為單位)
  • %p- 指向檔案名稱的格式說明符
  • sort -nr- 以相反的順序對記錄進行數字排序
  • head -1- 列印 TOP 第一行/記錄

為了得到一個人類可讀的檔案大小值 - 使用 GNU 命令擴充管道numfmt(如果支援):

find . -type f -printf "%s %p\n" | sort -nr | head -1 | numfmt --to=si

答案2

對於zsh最大的常規文件:

ls -ld -- **/*(.DOL[1])

(當然,您可以替換ls -ld --為任何命令。如果使用 GNUls或相容版本,請參閱-h選項人類可讀的尺寸

  • .: 僅有的常規的文件(不是目錄、符號連結、設備、fifo...)
  • D:包括隱藏的並進入隱藏目錄
  • OL:依大小(長度)倒序排列L
  • [1]: 僅限第一場比賽。

如果有平局,您將隨機獲得其中任何一個。如果您想要按字母順序排列第一個,請新增一個額外的onorder by name)以按字母順序對關係進行排序。

相關內容