
我需要找到當前目錄和後續目錄中最大的檔案。我試過
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]
: 僅限第一場比賽。
如果有平局,您將隨機獲得其中任何一個。如果您想要按字母順序排列第一個,請新增一個額外的on
(o
rder by n
ame)以按字母順序對關係進行排序。