터미널과 함께 현재 폴더 폴더의 크기를 나열 하시겠습니까?


134

현재 디렉토리의 폴더 목록 또는 크기로 지정한 폴더 목록을 원합니다.

du로 시도했지만 내가 지정한 디렉토리의 크기 (du. ./f1) 만 가져오고 ls는 폴더의 크기를 표시하지 않습니다.

스크립팅없이 어떻게해야합니까?


바보처럼 들리지 않지만 'man du';)
Jakub

5
고마워 ;-)하지만 이미 시도했지만 아무것도 찾을 수 없습니다. 그리고 인터넷 검색을 시도하십시오!
kevin

답변:


212

현재 디렉토리의 모든 디렉토리를 표시하려면 다음을 수행하십시오.

$ du -sh */
788K    foo/
500K    bar/
931K    baz/

다른 디렉토리에서 시작하여 표시하려면 다음을 수행하십시오.

$ du -sh /path/to/dir/*/
48K     /path/to/dir/dir1/
4.0K    /path/to/dir/dir2/
6.7M    /path/to/dir/dir3/
20K     /path/to/dir/dir4/
8.0K    /path/to/dir/dir5/
44K     /path/to/dir/dir6/

점으로 시작하는 이름을 가진 디렉토리가 포함되도록하려면 shopt -s dotglob먼저 수행하십시오.


모든 훌륭한 답변에 감사하지만 이것은 가장 간단한 답변입니다. 테스트에서 결말을 잊어 버렸습니다.
kevin

1
-s는 요약을 의미하고 총계를 표시하고 -h는 사람이 읽을 수 있음을 의미합니다.
wranvaud

2
크기별로 폴더를 정렬하십시오 du -s */ | sort -n.
Anton Tarasenko


1
@AntonTarasenko : shopt -s dotglob 의사
Dennis Williamson

18

Mac에서 --max-depth 옵션은 -d [depth]로 대체되었습니다. 따라서 사람이 읽을 수있는 루트 드라이브 목록과 2 단계 깊이를 보려면 다음을 사용하십시오.

du -hd 2 /* 

참고 :이 명령은 루트에서 최상위 두 디렉토리 레벨을 노출시킵니다. 여기에는 볼륨에 한 레벨 탐색이 포함되며 연결된 각 볼륨에서 각 최상위 디렉토리의 요약 크기가 나열됩니다. 첨부 한 내용에 따라이 명령을 완료하는 데 시간이 걸릴 수 있습니다.


13

또 다른 방법은 --max-depth 옵션입니다.

du -h --max-depth=1 .

현재 폴더 아래의 모든 디렉토리와 파일을 크기와 함께 나열합니다.

깊이 2에는 하나 이상의 폴더 레벨이 나열됩니다.


4
Mac에서는 du -hd 2 .깊이가 2 단계입니다.
Ryan

아. 넵. 그리고 아마도 FreeBSD에서도 마찬가지입니다. 정보에 대해서 감사드립니다.
matthias krull

5

시험:

$ du -s ./f1

또는

$ du -sh ./f1

보다 친숙한 크기로 읽을 수 있습니다.


2

$ du --max-depth=1 /var/www/ | sort -n -r


3
기존 답변이있는 이전 질문에 대한 답변을 추가 할 때는 답변이 어떻게 다른지 설명하고 설명 만 포함하여 명령 전용 답변이 아닌 것이 좋습니다.
Jason Aller

3
매개 변수의 기능을 설명하기 위해 답을 확장 할 수 있습니까?
fixer1234

2

NCurses 디스크 사용 쉘 명령 을 언급 할 가치가 있습니다.

Ncdu는 ncurses 인터페이스가있는 디스크 사용량 분석기입니다. 전체 그래픽 설정을 사용할 수없는 원격 서버에서 스페이스 호그를 찾도록 설계되었지만 일반 데스크탑 시스템에서도 유용한 도구입니다. Ncdu는 빠르고 간단하며 사용하기 쉬우 며 ncurses가 설치된 최소 POSIX와 같은 환경에서 실행할 수 있어야합니다.


2

허용 대답에 구축,이 명령은 당신에게 디렉토리에 폴더의 크기를 표시합니다, 그리고 또한 쉽게 해석하기 위해 크기를 나열합니다 :

$ du -sh */ | sort -rn

1

Mac에서는 duHomebrew ( brew install coreutils)를 사용하여 GNU (Linux) 구현을 설치할 수 있습니다 . 그런 다음 예를 들면 다음과 같습니다.

gdu folder -shL --exclude=.git

어디

  • gdu은 GNU 구현에 지정된 이름입니다 du(기본적으로 Homebrew는 숨기지 않습니다 /usr/bin/du).
  • s 지정된 폴더에 대한 총계를 생성합니다 (내역을 보려면 생략).
  • h 사람이 읽을 수있는 크기를 출력합니다.
  • L 심볼릭 링크를 따릅니다.
  • --exclude=.git 지정된 폴더 내의 git 디렉토리를 제외합니다 (이것은 단지 예일뿐입니다).

을 추가하여 더 많은 폴더를 무시할 수 있습니다 --exclude=blah. 한 번에 여러 폴더를 지정할 수도 gdu folder1 folder2 ...있으며,이 경우 option을 사용하여 모든 소계를 단일 크기로 결합 할 수 있습니다 c.


1

다음은 POSIX 스크립트입니다.

  • 파일
  • 파일
  • 디렉토리
  • 디렉토리
#!/bin/sh
ls -ARgo "$@" | awk '{q += $3} END {print q}'

출처

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.