DU : 깊이있는 폴더 만 표시


12

du -h다음과 같이 출력됩니다 .

103M    ./.wine/drive_c/windows/mono/mono-2.0/lib/mono
103M    ./.wine/drive_c/windows/mono/mono-2.0/lib
129M    ./.wine/drive_c/windows/mono/mono-2.0
129M    ./.wine/drive_c/windows/mono
362M    ./.wine/drive_c/windows
545M    ./.wine/drive_c

가장 실행 가능한 폴더 인 폴더 만 표시하고 싶습니다. ./.wine/drive_c/windows/mono/mono-2.0/lib/mono

하위 폴더가 대부분의 디스크 공간 사용을 담당하는 경우 상위 폴더를 제거하는 방법이 있습니까?

리프 폴더 만 표시하는 설정은 트릭을 수행하거나 상위 폴더의 크기를 계산할 때 상위 폴더에서 모든 하위 폴더의 크기를 빼는 설정입니다.


시각적으로 추적하기가 더 쉽습니다. 무엇이 공간을 차지하는지 이해하는 방법을
Gilles 'SO- 악 그만

답변:


12

GNU du를 사용하는 경우 부모의 사용량을 계산할 때 -S또는 --separate-dirs옵션을 사용하여 하위 디렉토리의 크기를 포함하지 않을 수 있습니다 .

귀하의 du명령은이 옵션을 지원하지 않을 수 있습니다.

이 도구를 sort와 함께 사용하면 가장 큰 개별 디렉토리를 얻을 수 있습니다 (GNU 도구를 가정).

du --separate-dirs -h . |sort -h

이것은 내 쿼리의 '부모 폴더의 크기를 계산할 때 부모 폴더에서 모든 하위 폴더의 크기를 뺀 것'을 만족시키는 것 같습니다. 공간을 검색하기 위해 삭제할 가장 실행 가능한 폴더를 찾으려고합니다.
EoghanM

9

개인적으로 저는 GNU 정렬의 힘과 결합했습니다.

du -ch | sort -h

이렇게하면 크기가 사람이 읽을 수있는 형식으로 정렬됩니다. 예를 들면 다음과 같습니다.

$ du -h /usr/ | head -20 | sort -h
8.0K    /usr/src/linux-headers-3.2.0-3-common/include/misc
12K /usr/src/linux-headers-3.2.0-3-common/include/drm/i2c
12K /usr/src/linux-headers-3.2.0-3-common/include/net/netfilter/ipv4
16K /usr/src/linux-headers-3.2.0-3-common/include/net/netfilter/ipv6
20K /usr/src/linux-headers-3.2.0-3-common/include/net/phonet
28K /usr/src/linux-headers-3.2.0-3-common/include/acpi/platform
52K /usr/src/linux-headers-3.2.0-3-common/include/net/netns
60K /usr/lib32/libv4l
76K /usr/src/linux-headers-3.2.0-3-common/include/net/caif
96K /usr/src/linux-headers-3.2.0-3-common/include/scsi/fc
108K    /usr/src/linux-headers-3.2.0-3-common/include/net/bluetooth
112K    /usr/src/linux-headers-3.2.0-3-common/include/drm/ttm
148K    /usr/src/linux-headers-3.2.0-3-common/include/net/netfilter
264K    /usr/src/linux-headers-3.2.0-3-common/include/rdma
284K    /usr/src/linux-headers-3.2.0-3-common/include/acpi
596K    /usr/src/linux-headers-3.2.0-3-common/include/drm
608K    /usr/src/linux-headers-3.2.0-3-common/include/scsi
668K    /usr/games
6.3M    /usr/lib32/gconv
8.9M    /usr/lib32

보낸 사람 man sort:

   -h, --human-numeric-sort
          compare human readable numbers (e.g., 2K 1G)

그것은 여전히 ​​당신이 신경 쓰지 않는 것을 보여 주지만, 지금 당신이하는 것을 찾기가 매우 쉽습니다.


아니요, 545M ./.wine/drive_c폴더와 파일 만 포함하고 있지만 drive_c의 (재귀 적) 하위 폴더에 공간이 어떻게 분산되어 있는지 확인하기가 어렵습니다. 목록에 연속적으로 나타나지 않습니다.
EoghanM

6

명확하게 정렬 된보기를 찾고 있다면 durep패키지를 권장합니다 .

출력 예 :

root@dogmeat:~# durep -td 4 -hs 50M /usr/
[ /usr     4.8G (0 files, 9 dirs) ]
   1.9G [###########                   ]  38.57% lib/
     463.6M [#######                       ]  24.46% x86_64-linux-gnu/
         102.3M [######                        ]  22.07% wine/
     276.2M [####                          ]  14.57% i386-linux-gnu/
          96.1M [##########                    ]  34.80% wine/
     222.4M [###                           ]  11.73% libreoffice/
         189.3M [#########################     ]  85.12% program/
     122.6M [#                             ]   6.47% chromium-browser/
          87.6M [#####################         ]  71.46% chromium-browser
      79.5M [#                             ]   4.19% virtualbox/
      79.4M [#                             ]   4.19% jvm/
          73.4M [###########################   ]  92.52% java-7-openjdk-amd64/
              73.4M [############################# ]  99.99% jre/
      75.7M [#                             ]   3.99% python2.7/
          58.4M [#######################       ]  77.21% dist-packages/
      58.9M [                              ]   3.11% firefox/
      52.2M [                              ]   2.75% libwireshark.so.2.0.2
   1.4G [########                      ]  29.56% src/
   1.2G [#######                       ]  26.03% share/
     211.6M [####                          ]  16.54% fonts/
         199.3M [############################  ]  94.18% truetype/
              84.2M [############                  ]  42.23% horai-umefont/
     174.6M [####                          ]  13.64% icons/
          91.5M [###############               ]  52.39% gnome/
              66.4M [#####################         ]  72.60% icon-theme.cache
      77.5M [#                             ]   6.05% gimp/
          77.5M [##############################] 100.00% 2.0/
              66.2M [#########################     ]  85.43% help/
      74.4M [#                             ]   5.82% virtualbox/
          56.9M [######################        ]  76.42% VBoxGuestAdditions.iso
      62.9M [#                             ]   4.91% doc/
 240.1M [#                             ]   4.89% bin/

사용 -td최대 깊이를 지정하는 매개 변수를, 그리고 -hs폴더가 결과에 표시하는 매개 변수는 최소 크기를 지정할 수 있습니다.


2

별로 확인이 당신이 원하는,하지만 당신은 GNU 사용하여 부모 디렉토리를 제거 할 수있는 경우 find의를 -execdir:

find . -type d -execdir du -ch "{}" \;

-execdir옵션은 파일을 찾은 -exec서브 디렉토리에 제공 한 명령 과 유사 하지만 실행 find합니다.


흠, 그것은 당신이 설명하는 것처럼 작동하지 않는 것 같습니다. 여전히 출력에 많은 부모 디렉토리가 있습니다.
EoghanM

2

du예를 들어 고정 수심을 사용 하는 경우 du -m -d 2 .최대 수심에 도달하지 않는 선을 마스킹 할 수 있습니다.

du -m -d 2 . | sort -k1n | awk -F"/" 'NF==3'

이 경우 깊이가 2 개인 디렉토리가 필요하므로 시작시 필드 구분 기호 로 지정한 후에 awk키워드 로 정의한 3 개의 필드 만 결과를 유지했습니다 .NF"/"


0

이 두 가지 모두 나를 위해 작동합니다.

 du -h | perl -ne '$n=()=$_=~m#/#g;  print unless $n > 2'
 du -h | perl -ne 'print unless ($n=()=$_=~m#/#g) > 2 '

약간의 주석, 숫자를 일치 시키려면 일치하는 목록 컨텍스트에 일치해야합니다 ().
huw

뒤 -h | 펄 -ne '인쇄 (() = $ _ = ~ m # / # g)>이하지 않는'
huw
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.