如何一次輸出所有按大小排序的檔案/目錄,包括隱藏的檔案/目錄(名稱以點開頭的檔案/目錄)?
經過目錄的大小,我的意思是目錄及其所有子目錄樹中所有檔案大小的總和。
差異為如何du -h
依大小對輸出進行排序?是我請求的輸出包括全部目前目錄中的檔案和目錄 –無論隱藏與否。
參考
答案1
如何輸出按大小排序的所有檔案/目錄,包括隱藏的檔案/目錄?
使用du
(磁碟使用情況)命令,它是GNU 核心工具: 1
du -hs -- * .[^.]* | sort -h
這.[^.]*
正規表示式確保包含隱藏檔案和目錄。
清單僅隱藏檔案和目錄,依大小遞增排序:
du -hs -- .[^.]* | sort -h
清單僅目錄– 無論是否隱藏 – 依大小遞增排序:
du -hs -- */ .[^.]*/ | sort -h
僅列出文件在目前目錄下
清單全部文件,依大小遞增排序:2
ls -AhlS | grep '^-' | tac
僅列出隱文件,依大小遞增排序:
ls -hldS .* | grep '^-' | tac
僅列出常規的(非隱藏)文件,依大小遞增排序:
ls -lS | grep '^-' | tac
列出文件遞迴地– 在所有子目錄樹中
問題中沒有詢問這一點,但有時您可能想要列出子目錄樹(包括當前目錄)中的所有文件,按大小排序。3
du -ah | sort -h
輸出將是子目錄和檔案的清單(可能非常長)。要將其限制為僅文件,您需要了解最大文件的文件副檔名(透過查看上述命令的輸出)。
du -ah | sort -h | grep .<file-extension>
此處您應該替換<file-extension>
為zip
、png
、jpg
或最大檔案具有的任何檔案副檔名。
例子:
du -ah | sort -h | grep .zip
du -ah | sort -h | grep .png
參考
- (磁碟
du
使用)Linux 手冊頁 - GNU 核心工具
- 在正規表示式中,插入符號 (
^
) 表示不是 - 評論如何包含隱藏和非隱藏文件
- 實用語法 |準則 10,選項結束
- 磁碟
ncdu
使用分析器 - 答案推薦
ncdu
- (列
ls
目錄內容)Linux 手冊頁 - 如何在命令列中反轉輸出
- 如何僅顯示大小超過 1 GB 的資料夾
- 如何列出按大小排序的所有文件
1
我非常感謝我的解決方案這則評論。--
論點標誌著選項的結束。對於非常大的文件/資料夾,
該du
命令可能會非常慢。考慮使用ncdu
命令代替。
若要在 Debian 衍生版本(包括 Ubuntu)上安裝,請執行sudo apt install -y ncdu
:
在 Arch Linux(包括 MSYS2)上,運行yes | pacman -Syu ncdu
:
要使用它,請鍵入ncdu
,然後按↵。
2-h
國旗
ls
以人類可讀的方式輸出檔案大小。
此-S
標誌會依以下順序對輸出進行排序減少尺寸。
該管道| grep '^-'
不包括目錄和符號連結。
管道| tac
反轉輸出。
3 噹噹前目錄的大小是幾兆位元組而不是千兆位元組時,這可能更令人感興趣。