Tiện ích Linux để tìm các tệp / thư mục lớn nhất [đã đóng]


134

Tôi đang tìm một chương trình để chỉ cho tôi những tập tin / thư mục nào chiếm nhiều dung lượng nhất, đại loại như:

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

Tôi biết rằng có thể có trong KDE3, nhưng tôi không muốn làm điều đó - KDE4 hoặc dòng lệnh được ưu tiên.


Đối với người dùng mac, tôi chỉ muốn giới thiệu phần mềm miễn phí có tên Disk Inventory X. tải xuống tại đây derlien.com sử dụng đơn giản cho mac osx
Nimitack

Câu trả lời:


131

Để tìm 10 tệp lớn nhất (linux / bash):

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

Để tìm 10 thư mục lớn nhất:

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

Chỉ khác là có -type {d:f}.

Xử lý các tệp có khoảng trắng trong tên và tạo kích thước tệp có thể đọc được ở đầu ra. Tập tin lớn nhất được liệt kê cuối cùng. Đối số theo đuôi là số lượng kết quả bạn thấy (ở đây là 10 kết quả lớn nhất).

Có hai kỹ thuật được sử dụng để xử lý khoảng trắng trong tên tệp. Sử find -print0 | xargs -0dụng dấu phân cách null thay vì dấu cách và phần thứ hai xargs -I{}sử dụng dòng mới thay vì dấu cách để chấm dứt các mục đầu vào.

thí dụ:

$ 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

Tệp lớn nhất được liệt kê đầu tiên : find . -type f -print0 | xargs -0 du | sort -nr | head -10 | cut -f2 | xargs -I{} du -sh {}(nghĩa là sử dụng sort -nr | head -10thay vì sort -n | tail -10)
Sandra Rossi

200

Tôi luôn luôn sử dụng ncdu. Nó tương tác và rất nhanh.


Vâng và nó nhỏ!
Luke Stanley

5
Tôi yêu người Ncdu. Đó là một trong những tìm kiếm google yêu thích của tôi.
Cướp

5
Ồ Làm thế nào tôi không biết điều này tồn tại. Cảm ơn!
pixel

22
+1000 cho ncdu--- nó giống như htopkhông gian đĩa. Siêu hữu ích!

vì dường như không có cờ hay tùy chọn .config, đây là chuỗi khóa bạn có thể nhập mỗi lần bạn chạy nếu bạn muốn xem các tệp và thư mục được trộn lẫn và thống kê tỷ lệ phần trăm tương đối : [t] [g] [g].
rymo

37

Để xem nhanh:

du | sort -n

liệt kê tất cả các thư mục lớn nhất cuối cùng

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

hoặc, một lần nữa, tránh sự dư thừa *:

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

liệt kê tất cả các thư mục trong thư mục hiện tại với lớn nhất cuối cùng.

(-n tham số để sắp xếp là bắt buộc để trường đầu tiên được sắp xếp dưới dạng số chứ không phải là văn bản nhưng điều này loại trừ sử dụng tham số -h để du vì chúng tôi cần một số đáng kể cho sắp xếp)

Các tham số khác cho du có sẵn nếu bạn muốn theo các liên kết tượng trưng (mặc định là không theo các liên kết tượng trưng) hoặc chỉ hiển thị kích thước của nội dung thư mục, ngoại trừ thư mục con, chẳng hạn. du thậm chí có thể bao gồm trong danh sách ngày và giờ khi bất kỳ tập tin nào trong thư mục được thay đổi lần cuối.


3
Là * thực sự cần thiết. Theo mặc định, nó có bao gồm tất cả các tệp trong thư mục hiện tại không?
Josh Hunt

Không, * nên là dư thừa. Tôi không chắc việc sử dụng nó là dấu hiệu của một thói quen tốt hay xấu. Cảm ơn đã chỉ ra điều đó. Tôi đã sửa đổi câu trả lời để phản ánh nó là tùy chọn.
mas

Điều này tốt nhưng kết quả không thân thiện lắm. Tôi thường chuyển sang cái này:find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
deed02392

roman # du --max-sâu = 1 | sort -n du: tùy chọn bất hợp pháp - - cách sử dụng: du [-A] [-H | -L | -P] [-a | -s | -d độ sâu] [-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-
gọn gàng hơn

23

Đối với hầu hết mọi thứ, tôi thích các công cụ CLI, nhưng đối với việc sử dụng ổ đĩa, tôi thực sự thích filelight . Bài thuyết trình trực quan với tôi hơn bất kỳ công cụ quản lý không gian nào tôi từng thấy.

Ảnh chụp màn hình


1
Filelight là công cụ cắt tỉa không gian hog của tôi.
Ryan Thompson

Ứng dụng rất tốt. +1
rpax

Trực quan, đó là nghệ thuật hấp dẫn, nhưng trực quan? Chỉ cần nhìn vào nó, tôi không biết nó đại diện cho cái gì. Ai đó có thể giải thích nó? Tôi đã đi đến trang web, và tôi không thấy bất kỳ lời giải thích.
G-Man

Một công cụ tương tự trên Mac là DaisyDisk, có sẵn tại daisydiskapp.com
tính toán

20

Filelight tốt hơn cho người dùng KDE, nhưng để hoàn thiện (tiêu đề câu hỏi là chung) Tôi phải đề cập đến Baobab được bao gồm trong Ubuntu, còn gọi là Trình phân tích sử dụng đĩa:

nhập mô tả hình ảnh ở đây


Nếu bạn đang tìm kiếm một thứ tương đương với cái này trên nền tảng Mac, hãy kiểm tra DaisyDisk.
tính toán

8

Một công cụ GUI, KDirStat , hiển thị dữ liệu cả ở dạng bảng và đồ họa. Bạn có thể thấy thực sự nhanh chóng, nơi hầu hết không gian được sử dụng.

nhập mô tả hình ảnh ở đây

Tôi không chắc đây có chính xác là công cụ KDE mà bạn không muốn hay không, nhưng tôi nghĩ nó vẫn nên được đề cập trong một câu hỏi như thế này. Điều đó tốt và nhiều người có thể không biết điều đó - bản thân tôi chỉ mới biết về nó gần đây.


Cảm ơn câu trả lời. Đó là công cụ chính xác giống như tôi có trong KDE3, nhưng tôi đã chuyển sang KDE 4.
Robert Munteanu

Bạn có chắc chắn bạn không thể có được kdirstat cho KDE4?
Jonik

4
Kdirstat rất chậm. Sử dụng ncduthay thế.
Daenyth

Tôi vừa nhấn ctrl + f để tìm ncdu và thấy rằng tôi đã nâng cấp @Daenyth
Rob

Trên KDE, nó được gọi đơn giản là k4dirstat .
phihag

5

Một sự kết hợp luôn là thủ thuật tốt nhất trên Unix.

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

Sẽ hiển thị kích thước thư mục tính bằng KB và sắp xếp để đưa ra kích thước lớn nhất ở cuối.
Chế độ xem cây tuy nhiên sẽ cần thêm một số ... có thực sự cần thiết không?

Lưu ý rằng quá trình quét này được lồng trong các thư mục, vì vậy nó sẽ đếm các thư mục con một lần nữa cho các thư mục cao hơn và thư mục cơ sở .sẽ hiển thị ở cuối là tổng số sử dụng.

Tuy nhiên, bạn có thể sử dụng điều khiển độ sâu trên tìm kiếm để tìm kiếm ở độ sâu cụ thể.
Và, thực sự tham gia nhiều hơn vào quá trình quét của bạn ... tùy thuộc vào những gì bạn muốn. Kiểm soát độ sâu findvới -maxdepth-mindepthcó thể giới hạn độ sâu thư mục con cụ thể.


Đây là một biến thể tinh tế cho vấn đề quá dài của bạn

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

Tôi đã thử điều đó và tôi đã nhận được rất nhiều 'du: Nhiệm vụ: Không có tệp hoặc thư mục như vậy'
Josh Hunt

Cảm ơn câu trả lời. Thật không may, tôi nhận được bash: / usr / bin / du: Danh sách đối số quá dài
Robert Munteanu

3

Tôi thích gt5 . Bạn có thể điều hướng cây và các thư mục con mở để xem chi tiết hơn. Nó sử dụng trình duyệt web ở chế độ văn bản, chẳng hạn như lynx, để hiển thị kết quả. Cài đặt elinks để có kết quả tốt nhất.

văn bản thay thế


2

Mặc dù nó không cung cấp cho bạn một đầu ra lồng nhau như thế, hãy thử du

du -h /path/to/dir/

Chạy nó trên thư mục Tài liệu của tôi phun ra như sau:

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
[...]

Sau đó, bạn có thể sắp xếp đầu ra bằng cách dẫn nó qua sort

du /path/to/dir | sort -n

Cảm ơn, nhưng nó không hiển thị đúng thư mục nào lớn nhất. Nếu tôi khởi động nó trong thư mục nhà của tôi thì đầu ra không thể sử dụng được.
Robert Munteanu

1

Đây là kịch bản tự động làm điều đó cho bạn.

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

Sau đây là đầu ra mẫu của tập lệnh:

**# 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% ***

Bạn có thể thấy kịch bản này rất tiện dụng và hữu ích!


2
Mặc dù trang web được liên kết đưa ra hướng dẫn, nhưng bạn nên sử dụng cách diễn giải sau đó tham chiếu trang web bên ngoài (trông giống như một blog cá nhân). Điều này sẽ ngăn chặn thối liên kết và giúp nhiều người hơn trên trang web này
Canada Luke

1
Liên kết bị hỏng?
Danijel

1

Mặc dù việc tìm kiếm tỷ lệ sử dụng đĩa của mỗi tệp / thư mục là có lợi, nhưng hầu hết thời gian biết các tệp / thư mục lớn nhất trong đĩa là đủ.

Vì vậy, yêu thích của tôi là:

# du -a | sort -n -r | head -n 20

Và đầu ra là như thế này:

28626644        .
28052128        ./www
28044812        ./www/vhosts
28017860        ./www/vhosts/example.com
23317776        ./www/vhosts/example.com/httpdocs
23295012        ./www/vhosts/example.com/httpdocs/myfolder
23271868        ./www/vhosts/example.com/httpdocs/myfolder/temp
11619576        ./www/vhosts/example.com/httpdocs/myfolder/temp/main
11590700        ./www/vhosts/example.com/httpdocs/myfolder/temp/main/user
11564748        ./www/vhosts/example.com/httpdocs/myfolder/temp/others
4699852         ./www/vhosts/example.com/stats
4479728         ./www/vhosts/example.com/stats/logs
4437900         ./www/vhosts/example.com/stats/logs/access_log.processed
401848          ./lib
323432          ./lib/mysql
246828          ./lib/mysql/mydatabase
215680          ./www/vhosts/example.com/stats/webstat
182364          ./www/vhosts/example.com/httpdocs/tmp/aaa.sql
181304          ./www/vhosts/example.com/httpdocs/tmp/bbb.sql
181144          ./www/vhosts/example.com/httpdocs/tmp/ccc.sql

1

Để tìm 25 tệp hàng đầu trong thư mục hiện tại và các thư mục con của nó:

find . -type f -exec ls -al {} \; | sort -nr -k5 | head -n 25

Sẽ xuất 25 tệp hàng đầu bằng cách sắp xếp dựa trên kích thước của tệp thông qua lệnh đường ống "sort -nr -k5".


1

Một cách khác là ageu phá vỡ không gian đĩa theo thời gian truy cập cuối cùng, giúp dễ dàng xác định vị trí các tệp lãng phí không gian.

Nó thậm chí hoạt động trên một máy chủ không có X Windows bằng cách phục vụ các trang web tạm thời để việc sử dụng có thể được phân tích từ xa, với các biểu đồ. Giả sử địa chỉ IP của máy chủ là 192.168.1.101, bạn có thể nhập địa chỉ này trên dòng lệnh của máy chủ

agedu -s / -w --address 192.168.1.101:60870 --auth basic -R

Thao tác này sẽ in tên người dùng, mật khẩu và URL mà bạn có thể truy cập "GUI" và duyệt kết quả. Khi hoàn tất, chấm dứt ageduvới Ctrl+Dtrên máy chủ.


0
du -chs /*

Sẽ hiển thị cho bạn một danh sách các thư mục gốc.


0

Để hoàn thành danh sách thêm một chút nữa, tôi thêm bộ phân tích sử dụng đĩa yêu thích của mình, đó là xdiskusage.

GUI ghi nhớ cho tôi một số tiện ích ol 'X tốt khác, nó nhanh và không cồng kềnh, tuy nhiên bạn vẫn có thể điều hướng dễ dàng trong cấu trúc phân cấp và có một số tùy chọn hiển thị:

$ xdiskusage /usr

nhập mô tả hình ảnh ở đây


0

Hãy thử một lớp lót sau (hiển thị 20 tệp lớn nhất trong thư mục hiện tại):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

hoặc với kích thước có thể đọc được của con người:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

Lệnh thứ hai để hoạt động trên OSX / BSD đúng cách (như sortkhông có -h), bạn cần cài đặt sorttừ coreutils.

Vì vậy, các bí danh này rất hữu ích để có trong các tệp RC của bạn (mỗi khi bạn cần):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.