題 用於查找最大文件/目錄的Linux實用程序[關閉]


我正在尋找一個程序來向我展示哪些文件/目錄佔用的空間最大,例如:

74% music
 \- 60% music1
 \- 14% music2
12% code
13% other

我知道在KDE3中這是可能的,但我寧願不這樣做 - 首選KDE4或命令行。


130
2017-07-21 06:54


起源


對於mac用戶,我只想推荐一款名為Disk Inventory X的免費軟件。在這裡下載 derlien.com 它很容易用於mac osx - Nimitack


答案:


要找到最大的10個文件(linux / bash):

find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

要查找最大的10個目錄:

find . -type d -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

唯一的區別是 -type {d:f}

處理名稱中帶有空格的文件,並在輸出中生成人類可讀的文件大小。最後列出的最大文件。 tail的參數是你看到的結果數(這裡是最大的10個)。

有兩種技術用於處理文件名中的空格。該 find -print0 | xargs -0 使用null分隔符而不是空格,第二個 xargs -I{} 使用換行符而不是空格來終止輸入項。

例:

$ find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

  76M    ./snapshots/projects/weekly.1/onthisday/onthisday.tar.gz
  76M    ./snapshots/projects/weekly.2/onthisday/onthisday.tar.gz
  76M    ./snapshots/projects/weekly.3/onthisday/onthisday.tar.gz
  76M    ./tmp/projects/onthisday/onthisday.tar.gz
  114M   ./Dropbox/snapshots/weekly.tgz
  114M   ./Dropbox/snapshots/daily.tgz
  114M   ./Dropbox/snapshots/monthly.tgz
  117M   ./Calibre Library/Robert Martin/cc.mobi
  159M   ./.local/share/Trash/files/funky chicken.mpg
  346M   ./Downloads/The Walking Dead S02E02 ... (dutch subs nl).avi

130
2018-03-06 19:56





我總是用 ncdu。它具有互動性,速度非常快。


189
2017-07-07 15:31



是的,它很小! - Luke Stanley
我喜歡ncdu。這是我最喜歡的google發現之一。 - Rob
哇。我怎麼不知道這個存在。謝謝! - pixel
+1000 for ncdu  - - 就像是 htop 用於磁盤空間。超級有用! - Noah Sussman
因為似乎沒有標誌也沒有.config選項,如果您希望看到文件和文件夾混合以及相對百分比統計數據,那麼每次運行它時,您可能會輸入鍵序列: [t] [g] [g]。 - rymo


快速查看:

du | sort -n

列出最後一個最大的目錄。

du --max-depth=1 * | sort -n

或者,再次避免冗餘*:

du --max-depth=1 | sort -n

列出當前目錄中具有最大最後一個目錄的所有目錄。

(-n參數是必需的,因此第一個字段被排序為數字而不是文本,但這排除了使用-h參數到du,因為我們需要一個有效數字的排序)

如果您想要遵循符號鏈接(默認不遵循符號鏈接)或僅顯示目錄內容的大小(例如,除了子目錄),則可以使用du的其他參數。 du甚至可以在列表中包含上次更改目錄中任何文件的日期和時間。


37
2017-07-21 07:19



是*真的有必要。它默認不包含當前目錄中的所有文件嗎? - Josh Hunt
不,*應該是多餘的。我不確定使用它是好習慣還是壞習慣的標誌。謝謝你指出來。我修改了答案,將其反映為可選項。 - mas
這很好,但結果不是很友好。我經常轉向這個: find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }' - deed02392
羅馬#du --max-depth = 1 | sort -n du:非法選項 - - 用法:du [-A] [-H | -L | -P] [-a | -s | -d depth] [-c] [-l] [-h | -k | -m | -B bsize] [-n] [-x] [-I mask] [file ...] - holms
du -h --max-depth=1 2>/dev/null | sort -nr | grep -v ^0  - 有點整潔 - Stuart Cardall


對於大多數事情,我更喜歡CLI工具,但對於驅動器使用,我真的很喜歡 filelight。對我來說,演示比我見過的任何其他空間管理工具更直觀。

Filelight screenshot


23
2017-07-24 04:26



Filelight是我選擇的太空豬修剪工具。 - Ryan Thompson
非常好的應用程序+1 - rpax
從視覺上看,這是藝術上有趣,但直觀嗎?僅僅從看它,我不知道它代表什麼。有人可以解釋一下嗎?我去了網站,我沒有看到任何解釋。 - G-Man
Mac上的類似工具是DaisyDisk,可從以下位置獲得 daisydiskapp.com - computingfreak


對於KDE用戶來說,Filelight更好,但為了完整性(問題標題是一般的)我必須提到 猴麵包樹 包含在Ubuntu中,即磁盤使用率分析器:

enter image description here


20
2018-02-18 04:35



如果您在Mac平台上尋找相同的功能,請查看DaisyDisk。 - computingfreak


一個GUI工具, KDirStat,以表格形式和圖形顯示數據。您可以非常快速地看到大部分空間的使用位置。

enter image description here

我不確定這是否是您不想要的KDE工具,但我認為仍然應該在這樣的問題中提及它。這很好,很多人可能都不知道 - 我最近才了解它。


8
2017-07-22 10:00



謝謝你的回答。就是這樣 精確 我在KDE3中使用的工具相同,但我轉到了KDE 4。 - Robert Munteanu
你確定你不能為KDE4獲得kdirstat嗎? - Jonik
Kdirstat太慢了。使用 ncdu 代替。 - Daenyth
我只是點擊ctrl + f找到ncdu,看到我已經upvoted @Daenyth了 - Rob
在KDE上,它只是被稱為 k4dirstat。 - phihag


組合始終是Unix上最好的技巧。

du -sk $(find . -type d) | sort -n -k 1

將以KB為單位顯示目錄大小並排序以在最後給出最大值。
然而,樹視圖需要更多的東西...它真的需要嗎?

請注意,此掃描跨目錄嵌套,因此它將計算子目錄 再次為更高的目錄和基本目錄 . 將在最後顯示為總利用率總和。

但是,您可以在查找上使用深度控制來搜索特定深度。
並且,實際上更多地涉及您的掃描......取決於您想要什麼。 深度控制 find-maxdepth 和 -mindepth 可以限製到特定的子目錄深度。


以下是您的arg-too-long問題的精緻變體

find . -type d -exec du -sk {} \; |  sort -n -k 1

5
2017-07-21 07:06



我試過了,我得到了很多'du:任務:沒有這樣的文件或目錄' - Josh Hunt
謝謝你的回答。不幸的是我得到了 bash:/ usr / bin / du:參數列表太長了 - Robert Munteanu


我喜歡 GT5。您可以導航樹並打開子目錄以深入了解更多詳細信息。它使用文本模式Web瀏覽器(如lynx)來顯示結果。安裝 elinks 為了最好的結果。

alt text


3
2017-07-21 11:35





雖然它不會給你這樣的嵌套輸出,但試試吧 du

du -h /path/to/dir/

在我的Documents文件夾上運行它會吐出以下內容:

josh-hunts-macbook:Documents joshhunt$ du -h
  0B    ./Adobe Scripts
  0B    ./Colloquy Transcripts
 23M    ./Electronic Arts/The Sims 3/Custom Music
  0B    ./Electronic Arts/The Sims 3/InstalledWorlds
364K    ./Electronic Arts/The Sims 3/Library
 77M    ./Electronic Arts/The Sims 3/Recorded Videos
101M    ./Electronic Arts/The Sims 3/Saves
 40M    ./Electronic Arts/The Sims 3/Screenshots
1.6M    ./Electronic Arts/The Sims 3/Thumbnails
387M    ./Electronic Arts/The Sims 3
387M    ./Electronic Arts
984K    ./English Advanced/Documents
1.8M    ./English Advanced
  0B    ./English Extension/Documents
212K    ./English Extension
100K    ./English Tutoring
5.6M    ./IPT/Multimedia Assessment Task
720K    ./IPT/Transaction Processing Systems
8.6M    ./IPT
1.5M    ./Job
432K    ./Legal Studies/Crime
8.0K    ./Legal Studies/Documents
144K    ./Legal Studies/Family/PDFs
692K    ./Legal Studies/Family
1.1M    ./Legal Studies
380K    ./Maths/Assessment Task 1
388K    ./Maths
[...]

然後,您可以通過管道輸出來對輸出進行排序 sort

du /path/to/dir | sort -n

2
2017-07-21 07:00



謝謝,但它沒有正確顯示哪個目錄最大。如果我在我的主目錄中啟動它,則輸出不可用。 - Robert Munteanu


這是自動為您完成的腳本。

http://www.thegeekscope.com/linux-script-to-find-largest-files/

以下是腳本的示例輸出:

**# sh get_largest_files.sh / 5**

[SIZE (BYTES)]     [% OF DISK] [OWNER]         [LAST MODIFIED ON]        [FILE] 

56421808           0%           root           2012-08-02 14:58:51       /usr/lib/locale/locale-archive
32464076           0%           root           2008-09-18 18:06:28       /usr/lib/libgcj.so.7rh.0.0
29147136           0%           root           2012-08-02 15:17:40       /var/lib/rpm/Packages
20278904           0%           root           2008-12-09 13:57:01       /usr/lib/xulrunner-1.9/libxul.so
16001944           0%           root           2012-08-02 15:02:36       /etc/selinux/targeted/modules/active/base.linked

Total disk size: 23792652288 Bytes
Total size occupied by these files: 154313868 Bytes  [ 0% of Total Disc Space  ]

*** Note: 0% represents less than 1% ***

您可能會發現此腳本非常方便且有用!


1
2017-09-06 05:27



雖然鏈接的網站確實提供了說明,但您最好先解釋一下外部網站(無論如何看起來像個人博客)。這樣可以防止鏈接腐爛並幫助更多人 在這個網站上 - Canadian Luke
鏈接壞了嗎? - Danijel