Bash?에서 한 줄 명령을 사용하여 각 하위 디렉토리 크기를 목록 형식으로 표시하십시오.


100

디렉토리 목록과 크기를 목록 형식으로 얻고 싶습니다 ls -l.

문제는 이것을 할 수있는 한 줄 명령이 있습니까? 다른 사람들이 이것을 출력하기 위해 긴 명령을 가지고 있음을 알았습니다. 너무 길어요

쉽게 입력 할 수있는 명령 또는 명령 조합을 수행 할 수있는 명령은 무엇입니까? du -h그것을 제공하지만 그것은 내가 원하는 것이 아닌 모든 하위 폴더를 표시합니다. 현재 디렉토리 폴더 만

답변:


71

크기별로 순서대로 디렉토리를보고 싶을 것입니다.

$ du -hs * | sort -hr

856M    lib
746M    share
612M    lib64
312M    src
267M    java
239M    bin
179M    sbin
173M    local
93M     i686-w64-mingw32
72M     libexec
26M     include
20M     puppet
772K    X11R6
20K     man
4.0K    games
4.0K    etc
0       tmp

디렉토리에 많은 항목이 있으면 작동하지 않습니다. bash: /run/current-system/sw/bin/du: Argument list too long
Chris Stryczynski

123

이 시도

du -h --max-depth=1

산출

oliver@home:/usr$ sudo du -h --max-depth=1
24M     ./include
20M     ./sbin
228M    ./local
4.0K    ./src
520M    ./lib
8.0K    ./games
1.3G    ./share
255M    ./bin
2.4G    .

대안

경우 --max-depth=1귀하의 취향에 조금 너무 긴, 당신은 또한 사용하여 시도 할 수 있습니다 :

du -h -s *

-s( --summarize)를 사용 하며 기본적으로 폴더 자체의 크기 만 인쇄합니다. 현재 작업 디렉토리 ( *) 의 모든 요소를 ​​전달 하면 다음과 유사한 출력이 생성됩니다 --max-depth=1.

산출

oliver@cloud:/usr$ sudo du -h -s *
255M    bin
8.0K    games
24M     include
520M    lib
0       lib64
228M    local
20M     sbin
1.3G    share
4.0K    src

차이점은 미묘합니다. 전자의 접근 방식은 현재 작업 디렉토리의 전체 크기와 그 안에 포함 된 모든 폴더의 전체 크기를 표시하지만 최대 깊이는 1입니다.

후자의 방법은 전달 된 모든 항목의 총 크기를 개별적으로 계산합니다 . 따라서 lib64출력 에는 심볼릭 링크 가 포함 되지만 숨겨진 항목 (이름은 점으로 시작)은 제외됩니다. 또한 인수로 전달되지 않았으므로 현재 작업 디렉토리의 전체 크기가 부족합니다.


4
완벽한 답변. Mac OSX에서는 --depth매개 변수가 인식되지 않습니다. du -h -d 1동일한 결과에 사용하십시오 .
Dylan


2

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

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

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