요약 된 크기의 디렉토리와 하위 디렉토리를 얻는 방법?


307

리눅스 파일 시스템의 각 디렉토리의 크기를 얻고 싶다고 가정 해 봅시다. 내가 사용할 때 ls -la폴더의 요약 된 크기를 얻지 못합니다.

내가 사용하면 df마운트 된 각 파일 시스템의 크기를 얻지 만 도움이되지 않습니다. 그리고 du각 하위 디렉토리의 크기와 전체 파일 시스템의 요약을 얻습니다.

그러나 파일 시스템의 ROOT 폴더 내에 각 디렉토리의 요약 된 크기 만 갖고 싶습니다. 그것을 달성하기위한 명령이 있습니까?


--total플래그는 나에게 도움이되었다. 예 du -sh --total applications/*. askubuntu.com/a/465436/48214
Ryan

답변:


433

이것은 당신이 찾고있는 것을합니다 :

du -sh /*

이게 무슨 뜻이야:

  • -s 각 명령 줄 인수에 대한 합계 만 제공합니다.
  • -hM메가 바이트 및 G기가 바이트와 같이 사람이 읽을 수있는 접미사 (선택 사항)
  • /*의 모든 디렉토리 (및 파일)로 간단히 확장됩니다 /.

    참고 : 도트 파일은 포함되지 않습니다. shopt -s dotglob그것들도 포함하도록 실행하십시오 .

크기별로 정렬하는 것도 유용합니다.

du -sh /* | sort -h

이리:

  • -h즉 보장 sort올바르게 사람이 읽을 수있는 접미사를 해석합니다.

8
루트 디렉토리에 점 디렉토리가 있으면이를 shopt -s dotglob계수에 포함시키는 데 사용할 수 있습니다 .
Philipp

8
그것은 간단하고 당신이 대신 원하는 어떤 경로를 배치 할 수 있기 때문에 매우 유용의 /*예, ./현재 디렉토리 또는 ./*현재 디렉토리에있는 각 항목에 대해.
psur

3
@psur 또는 당신이 사용할 수있는 ./*/유일한 하위 폴더 및 모든 항목을 얻을 수
relascope

7
정렬 버전 :du -sh /* | sort -h
Vu Anh

2
당신이 c1phr 경우 @ sort가 없습니다 -h, 당신은에서를 떠날 필요가 du그렇지 않으면 정렬이 킬로 / 메가 / 기가 바이트를 섞어 것뿐만 아니라. du -s /* | sort -nr.
토마스

79

나는 종종 가장 큰 디렉토리를 찾아야하므로 20 개의 가장 큰 디렉토리가 포함 된 정렬 된 목록을 얻으려면이 작업을 수행하십시오.

du -m /some/path | sort -nr | head -n 20

이 경우 크기는 MB 단위로보고됩니다.


11
보다 읽기 쉬운 du -sh / some / path | 정렬 -hr | head -n 20
Xedecimal

6
@Xedecima h를 사용하는 문제는 정렬이 다른 크기를 처리하는 방법을 모른다는 것입니다. 예를 들어 268K는 255M 이상으로 정렬되고 둘 다 2.7G 이상으로 정렬됩니다
chrisan

4
'sort'명령의 -h (사람이 읽을 수있는) 인수는 이러한 값을 올바르게 읽어야합니다. du의 -h 플래그가이를 내보내는 것처럼. 당신이 실행중인 것에 따라 나는 추측하고 있습니다.
Xedecimal

우분투 16.04에서 작동합니다. 좋은 팁.
SDsolar

sudo du -haxt 1G / | 정렬 -hr | 머리 -30
일탈


11

기존 답변이 매우 도움이 될 수 있습니다. 어쩌면 일부 나와 같은 초보자도 도움이 될 것입니다.

  1. 매우 기본적인 루프이지만 나에게 이것은 다른 크기 관련 작업을위한 좋은 시작이었습니다.

    for each in $(ls) ; do du -hs "$each" ; done
    
  2. 첫 번째 답변과 매우 유사하고 1)과 거의 동일한 결과이지만 하위 디렉토리에있는 경우 *와 ./*의 차이점을 이해하는 데 시간이 걸렸습니다.

    du -sh ./*
    

for each\033[폴더 목록에 콘솔 문자 (예 :)를 추가 할 때 작동하지 않습니다
machineaddict

@machineaddict 무슨 뜻인지 잘 모르겠습니다. 나는 이것을 항상 사용하고, 나를 위해 잘 작동합니다.
마틴

로 시작하여 명령을 실행하십시오 for each. 그것은 작동하지 않습니다
machineaddict

여기에 쓰여진대로 정확하게 명령을 실행합니다. 각각 시작합니다. 공장.
마틴

7

다음 du호출은 BSD 시스템에서 작동해야합니다.

du -d 1 /

1
du(Ubuntu 10.4)에는 -d옵션 이 없습니다 . 어떤 시스템을 사용하고 있습니까?
Thomas

내 openSUSE에는 -d 옵션도 없습니다 :(
2ndkauboy

좋아, 그러면 BSD 옵션 만입니다 (OS X에 있습니다).
Philipp

BSD / * NIX에서 올바른 이식 가능한 옵션 조합은 du -sk /*입니다. 나는 -k물건을 너무 싫어 . 리눅스는 -h완전히 흔들린다.
Dummy00001

다른 시스템에서--max-depth
비슈누 쿠마르

4

쉽지 않습니다. 이 du명령은 파일과 폴더를 표시하거나 (기본값) 명령 줄에 지정한 모든 항목의 크기 만 표시합니다 (옵션 -s).

Linux에서 사람이 읽을 수있는 크기로 정렬 된 가장 큰 항목 (파일 및 폴더)을 가져 오려면 다음을 수행하십시오.

du -h | sort -h

이것은 작은 파일들로 가득 차게됩니다. --threshold(내 예제에서는 1MB)를 사용 하여 제거 할 수 있습니다 .

du --threshold=1M -h | sort -h

이 명령의 장점은 숨겨진 도트 폴더 (로 시작하는 폴더)를 포함한다는 것 .입니다.

실제로 폴더를 원한다면 사용해야 find하지만 du많은 폴더를 여러 번 스캔해야하기 때문에 매우 느릴 수 있습니다 .

find . -type d -print0 | sort -z | xargs --null -I '{}' du -sh '{}' | sort -h

1
리눅스에 availavle되지 --threshold ^^^이 옵션
podarok

1
@podarok OpenSUSE 13.2 Linux에서 사용할 수 있습니다. 최신 버전의 배포판을 찾거나 최신 버전의 패키지를 직접 컴파일하십시오.
Aaron Digulla 8

Ubuntu LTS (14.04)에서는 작동하지 않습니다. 그것은 가장 최근))입니다
podarok

@podarok 어떤 GNU coreutils 버전이 있습니까? 광산은 8.24입니다.
Aaron Digulla

1
캐싱은 나쁜 용어 일 수 있습니다. 나는이 포트 superuser.com/a/597173/121352 에서 디스크 내용을 한 번 매핑으로 스캔 한 다음 디스크를 다시 누르지 않고 해당 매핑의 데이터를 계속 사용하는 것과 같은 것을 생각하고있었습니다 .
Hennes

1

du확실하지 않으면 디렉토리 를 다른 시스템 / 시스템 과 비교할 수 없으며 둘 다 파일 시스템의 동일한 블록 크기를 공유합니다. Linux 시스템에서 nas로 일부 파일을 재 동기화하고 동기화 된 디렉토리를 직접 비교하려는 경우 계산할 수 있습니다. du다른 블록 크기 로 인해 다른 결과를 얻을 수 있습니다 ....


0

xdiskusage 를 확인하고 싶을 수도 있습니다 . 동일한 정보를 제공하지만 그래픽으로 표시되며 드릴 다운 (매우 유용)이 가능합니다. KDE 및 Windows를위한 다른 유사한 유틸리티가 있습니다.


0

ls함께 사용할 수 있습니다 awk:

ls -al * | awk 'BEGIN {tot=0;} {tot = tot + $5;} END {printf ("%.2fMb\n",tot/1024/1024);}'

의 출력은 ls에 파이프됩니다 awk. awk데이터 처리를 시작합니다. 표준 구분 기호는 공간입니다. 합 변수 tot는 0으로 초기화됩니다. 에 의해 출력되는 각 행 / 라인에 대해 다음 명령문이 실행됩니다 ls. tot크기에 따라 증가 합니다. $5는 다섯 번째 열을 나타냅니다 (로 출력 ls). 결국 우리는 (1024 * 1024)로 나눠서 MB 단위로 합산합니다.

이것을 스크립트 나 함수 (.bashrc)로 변환하는 경우 파일 형식에 따라 특정 디렉토리 하위 집합의 크기를 얻는 데 사용할 수도 있습니다.

시스템 전체 정보를 원한다면 kdirstat유용 할 수 있습니다!


나는이 예제를 확장 할 수 있고 "파일 유형에 따라 특정 디렉토리의 하위 집합"의 크기를 얻는 것과 같은 트릭을 수행한다는 데 동의합니다. 좋은 출발점이 될 수 있습니다. 그럼에도 불구하고이 솔루션은 처음부터 결함이 있습니다. I가 독서 답변과 의견 추천이 방법을 사용하고자하는 모든 사용자에게 이 질문 뿐만 아니라 거기에 링크 된 기사를 . 나는 당신이 전혀 할 수 없다고 말하지 않습니다. 그 한계를 아십시오.
Kamil Maciorowski
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.