가장 큰 파일 / 디렉토리를 찾기위한 Linux 유틸리티 [닫기]


134

가장 많은 공간을 차지하는 파일 / 디렉토리를 보여주는 프로그램을 찾고 있습니다.

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

KDE3에서 가능하다는 것을 알고 있지만 KDE4 또는 명령 줄이 선호됩니다.


mac 사용자의 경우 Disk Inventory X라는 무료 소프트웨어를 추천합니다. 여기에서 다운로드하십시오 derlien.com mac osx에 사용하기 간단합니다
Nimitack

답변:


131

가장 큰 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}입니다.

이름에 공백이있는 파일을 처리하고 출력에서 ​​사람이 읽을 수있는 파일 크기를 생성합니다. 가장 큰 파일이 마지막에 나열되었습니다. 꼬리에 대한 논거는 당신이 보는 결과의 수입니다 (여기서는 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

가장 큰 파일이 가장 먼저 나열 됨 : find . -type f -print0 | xargs -0 du | sort -nr | head -10 | cut -f2 | xargs -I{} du -sh {}(즉, sort -nr | head -10대신 사용 sort -n | tail -10)
Sandra Rossi

200

나는 항상 사용 ncdu합니다. 대화식이며 매우 빠릅니다.


네 작습니다!
Luke Stanley

5
나는 ncdu를 좋아한다. 내가 가장 좋아하는 Google 검색 중 하나입니다.
Rob

5
와. 이것이 어떻게 존재하는지 알지 못했습니다. 감사!
픽셀

22
ncdu---의 경우 +1000은 htop디스크 공간 과 같습니다 . 매우 유용합니다!
노아 서스 먼

플래그 나 .config 옵션이없는 것처럼 보이기 때문에 다음은 파일과 폴더가 섞여 있고 상대 백분율 통계가 표시되는 경우 실행할 때마다 입력하는 주요 순서 [t] [g] [g]입니다.
rymo

37

빨리 보려면 :

du | sort -n

가장 큰 디렉토리를 모두 나열합니다.

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

또는 다시 중복을 피하십시오 * :

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

현재 디렉토리의 모든 디렉토리를 가장 큰 디렉토리로 나열합니다.

(-n 정렬 할 매개 변수가 필요하므로 첫 번째 필드는 텍스트가 아닌 숫자로 정렬되지만 정렬에 중요한 숫자가 필요하므로 -h 매개 변수를 du로 사용할 수 없습니다)

예를 들어, 심볼릭 링크를 따르거나 (기본값은 심볼릭 링크를 따르지 않음) 하위 디렉토리를 제외한 디렉토리 내용의 크기 만 표시하려는 경우 du에 대한 다른 매개 변수를 사용할 수 있습니다. du는 디렉토리의 파일이 마지막으로 변경된 날짜와 시간을 목록에 포함 할 수도 있습니다.


3
* 정말 필요합니다. 기본적으로 현재 디렉토리의 모든 파일이 포함되어 있지 않습니까?
Josh Hunt

아니요, *는 중복되어야합니다. 그것을 사용하는 것이 좋은 습관의 징후인지 나쁜 습관의 징후인지 확실하지 않습니다. 지적 해 주셔서 감사합니다. 선택 사항으로 반영하기 위해 답변을 수정했습니다.
mas

이것은 좋지만 결과는 매우 친절하지 않습니다. 나는 보통 이것으로 돌린다 :find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
deed02392

roman # du --max-depth = 1 | sort -n du : 잘못된 옵션--사용법 : du [-A] [-H | -L | -P] [-a | -s | -d 깊이] [-c] [-l] [-h | -k | -m | -B bsize] [-n] [-x] [-I 마스크] [파일 ...]
holms

du -h --max-depth=1 2>/dev/null | sort -nr | grep -v ^0-약간
깔끔한

23

대부분의 경우 CLI 도구를 선호하지만 드라이브 사용의 경우 filelight가 정말 좋습니다 . 프리젠 테이션은 내가 본 다른 공간 관리 도구보다 더 직관적입니다.

파일 라이트 스크린 샷


1
Filelight는 제가 선택한 공간 정리 도구입니다.
Ryan Thompson

아주 좋은 앱입니다. +1
rpax

시각적으로 흥미롭지 만 직관적입니까? 그것을 보면서, 나는 그것이 무엇을 대표하는지 전혀 모른다. 누군가 설명 할 수 있습니까? 나는 사이트에 갔는데 아무런 설명도 보지 못했다.
G-Man

Mac에서 비슷한 도구 DaisyDisk,에서 확인할 수있다 daisydiskapp.com
computingfreak

20

Filelight는 KDE 사용자에게는 더 좋지만 완전성 (질문 제목은 일반적 임)에는 Baobab 이 디스크 사용 분석기 (Ubuntu, 일명 디스크 사용량 분석기)에 포함되어 있음을 언급해야합니다 .

여기에 이미지 설명을 입력하십시오


Mac 플랫폼에서 이와 동등한 제품을 찾으려면 DaisyDisk를 확인하십시오.
컴퓨팅

8

GUI 도구 인 KDirStat 는 데이터를 테이블 형식과 그래픽으로 표시합니다. 대부분의 공간이 사용되는 곳을 실제로 빠르게 볼 수 있습니다.

여기에 이미지 설명을 입력하십시오

이것이 정확히 당신이 원하지 않는 KDE 도구인지 확실하지 않지만, 여전히 이런 질문에 언급되어야한다고 생각합니다. 그것은 좋고 많은 사람들이 아마 그것을 모른다-나는 최근에 나 자신에 대해 배웠다.


답변 해주셔서 감사합니다. 그것은의 정확한 내가 KDE3에 있었다 같은 도구,하지만 난 KDE 4로 이동
로버트 문테 아누

KDE4에 대한 kdirstat를 얻을 수 없습니까?
Jonik

4
Kdirstat는 너무 느립니다. ncdu대신 사용하십시오 .
데니스

방금 ctrl + f를 눌러 ncdu를 찾은 후 이미 @Daenyth
Rob

KDE에서는 간단히 k4dirstat 라고 합니다 .
phihag

5

조합은 항상 유닉스에서 최고의 트릭입니다.

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

디렉토리 크기를 KB로 표시하고 마지막에 가장 크게 표시하도록 정렬합니다.
그러나 Tree-view는 더 많은 것을 필요로 할 것입니다 ... 정말로 필요합니까?

이 스캔은 여러 디렉토리에 중첩되므로 상위 디렉토리에 대한 하위 디렉토리를 다시 계산하고 기본 디렉토리 .는 마지막에 총 활용도 합계로 표시됩니다.

그러나 찾기에서 깊이 제어를 사용하여 특정 깊이에서 검색 할 수 있습니다.
그리고 원하는 내용에 따라 실제로 스캔에 더 많이 관여 할 수 있습니다. 깊이 제어 find-maxdepth-mindepth특정 하위 디렉토리 깊이를 제한 할 수 있습니다.


너무 긴 문제에 대한 개선 된 변형은 다음과 같습니다.

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

나는 그것을 시도하지 그리고 난을 많이 가지고 '뒤 : 작업 : 그런 파일이나 디렉토리'
조쉬 헌트

답변 해주셔서 감사합니다. 불행히도 나는 bash를
Robert Munteanu

3

나는 gt5를 좋아 한다 . 트리를 탐색하고 하위 디렉토리를 열어 세부 사항을 드릴 다운 할 수 있습니다. lynx와 같은 텍스트 모드 웹 브라우저를 사용하여 결과를 표시합니다. 최상의 결과를 얻으려면 elink 를 설치하십시오 .

대체 텍스트


2

그런 식으로 중첩 된 출력을 제공하지는 않지만 시도해보십시오. du

du -h /path/to/dir/

내 문서 폴더에서 실행하면 다음과 같은 결과가 발생합니다.

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

고마워하지만 가장 큰 디렉토리를 올바르게 표시하지는 않습니다. 홈 디렉토리에서 시작하면 출력을 사용할 수 없습니다.
Robert Munteanu

1

다음은 자동으로 수행하는 스크립트입니다.

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

이 스크립트는 매우 편리하고 유용합니다!


2
링크 된 웹 사이트는 지침을 제공하지만 외부 사이트 (어쨌든 개인 블로그처럼 보임)를 구문 분석하고 참조하는 것이 좋습니다. 이것은 링크 썩음을 방지 하고이 사이트의
Canadian Luke

1
링크가 끊어 졌습니까?
Danijel

1

각 파일 / 디렉토리의 디스크 사용률을 찾는 것이 유익하지만 대부분의 경우 디스크 내부에서 가장 큰 파일 / 디렉토리를 아는 것으로 충분합니다.

그래서 내가 가장 좋아하는 것은 다음과 같습니다.

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

출력은 다음과 같습니다.

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

현재 디렉토리 및 해당 서브 디렉토리에서 상위 25 개 파일을 찾으려면 다음을 수행하십시오.

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

"sort -nr -k5"piped 명령을 통해 파일 크기를 기준으로 정렬하여 상위 25 개 파일을 출력합니다.


1

또 다른 대안은 마지막 액세스 시간으로 디스크 공간을 분할 하여 공간 낭비 파일을 쉽게 찾을 수있는 agedu 입니다.

심지어 임시 웹 페이지를 제공하여 X Windows가없는 서버에서도 작동하므로 그래프를 통해 사용량을 원격으로 분석 할 수 있습니다. 서버의 IP 주소가 192.168.1.101이라고 가정하면 서버의 명령 행에이를 입력 할 수 있습니다

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

"GUI"에 액세스하여 결과를 찾아 볼 수있는 사용자 이름, 비밀번호 및 URL을 인쇄합니다. 완료되면 종료 agedu와 함께 Ctrl+D서버.


0
du -chs /*

루트 디렉토리 목록을 보여줍니다.


0

목록을 조금 더 완성하기 위해 내가 좋아하는 디스크 사용량 분석기를 추가 xdiskusage합니다.

GUI는 다른 좋은 ol 'X 유틸리티를 기억합니다. 빠르고 빠르지는 않지만 그럼에도 불구하고 계층 구조에서 쉽게 탐색하고 몇 가지 표시 옵션을 가질 수 있습니다.

$ xdiskusage /usr

여기에 이미지 설명을 입력하십시오


0

다음의 한 줄짜리 파일을 사용해보십시오 (현재 디렉토리에서 가장 큰 20 개의 파일을 표시합니다) :

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

또는 사람이 읽을 수있는 크기로 :

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

두 번째 명령은 (로 제대로 OSX / BSD에서 작동 sort하지 않습니다 -h), 당신은 설치해야합니다 sort에서 coreutils.

따라서 이러한 별칭은 rc 파일에 필요할 때마다 (필요할 때마다) 유용합니다 .

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.