du 명령은 숨겨진 디렉토리를 구문 분석하지 않습니다


25

다음 명령을 사용하여 디렉토리가 사용하는 디스크 공간을 추정하고 싶습니다.

du -sh dir_name

숨겨진 디렉토리를 계산하지 않습니다. du의 man 페이지에는 그것에 관한 정보가 없습니다. 숨겨진 파일을 포함하여 디렉토리가 사용하는 디스크 공간의 양을 계산하는 방법

답변:


13

실제로는 다음과 같은 증거가 있습니다.

mkdir .test
echo "hi" > .test/appo
du -a
4       ./.test/appo
8       ./.test
12      .

-a옵션은 계산 된 파일을 명시 적으로 표시하는 데 사용됩니다.

사용하고 du *있습니까?


3
+1... you maybe using "du *" ?
sehe

2
"du *"를 사용하지 않습니다. 총 요약 요약이 필요하다는 질문에 언급하는 것을 잊었습니다. 따라서 du에서와 같이 -a와 -s를 모두 사용하면 "du : 모든 항목을 요약하고 표시 할 수 없습니다"라는 오류 메시지가 표시됩니다. 이것은 하나의 문제입니다. 다른 것은 du -ai를 사용하더라도 첫 번째 레벨 파일 만 볼 수 있다는 것입니다. 즉, 숨겨진 디렉토리 내부의 파일을 볼 수 없습니다.
Talespin_Kit

1
방금 계산 된 모든 파일 을 표시 하기 위해 -a를 추가했습니다. 그 플래그를 추가하지 마십시오. 총계가 아닌 디스플레이에만 영향을 미칩니다. 숨겨진 디렉토리가 계산되는 반례를 보여주었습니다.
stivlo

1
이제 나는 문제를 발견했다. 문제는 숨겨진 디렉토리가 심볼릭 링크 였기 때문에 "du -Lsh dir_name"을 사용해야했습니다. 감사.
Talespin_Kit

1
아, 알다시피, 당신이 그것을 찾았다는 것을 기쁘게 생각합니다.
stivlo

53

이 명령은 숨겨진 디렉토리의 요약 된 크기를 보여줍니다.

du -hs .[^.]*


1
이것은 내가 :) 덕분에, 찾고 있던 정확히
Nikana Reklawyks

이것이 올바른 해결책입니다
3pns

그 뒤에 마법을 조금 설명 할 수 있다면 정말 좋을 것입니다. 숨겨진 파일과 비 숨겨진 파일 및 디렉토리가 모두 포함 된 답변을 작성하는 데 도움이됩니다.
kumetix

13

올바른 명령은 다음과 같습니다. du -hs $(ls -A)

$ du -hs $(ls -A)
0   test
0   .test

du -hs .* *다른 답변에서 언급했듯이 모든 파일과 하위 디렉토리 (숨겨진 디렉토리 포함)를 나열하려면 올바르지 않습니다.

예 :

$ touch test
$ touch .test
$ echo *
test
$ echo .* *
. .. .test test
$ du -hs .* *
4,0K    .
1,8G    ..

왜 이렇게 du행동합니까? 당신이 사용하기 때문에 -s결과를 요약하는 것이 모든 파일 및 서브 디렉토리의 자녀임을 .그래서 du -hs그들을 나열하지 않습니다이!


11

참고로, 다양한 디렉토리가 차지하는 크기를 추정하기 위해 ncdu 를 사용하는 것이 훨씬 좋습니다.

다양한 디렉토리간에 ncurses GUI를 탐색 할 수 있으며 각 디렉토리의 크기가 표시됩니다. du를 사용하는 경우 번거로운 디렉토리를 확인하려는 각 디렉토리에 대해 du 명령을 실행해야합니다. ncurses GUI에서도 차지하는 크기에 따라 디렉토리를 정렬 할 수 있습니다.


1
ncdu가 "훨씬 더 좋다"고 생각하는 이유 를 표시하려면 답을 편집하십시오 . 링크 된 페이지는 ncurses 기반 버전 인 것 외에는 아무 것도 말하지 않습니다 du. 더 멋진 디스플레이 방법 외에도 기능상의 차이는 분명하지 않습니다.
Dave Sherohman

동적으로 쿼리를 조정하는 기능이 큰 이점이라고 생각합니다. ~에서 ncdu를 실행할 수 있고, 가장 많은 공간을 사용하는 디렉토리를 배우고 직접 그 디렉토리로 뛰어들 수 있습니다. 또한 d디렉토리를 삭제 하는 바인딩을 제공 하므로 인터페이스에서 직접 정리할 수 있습니다.
user88974

5

그렇지 않습니다. 예:

홈 디렉토리에서 : (한 명의 사용자 만 존재)

du -sh /home/*
2.6G    /home/user

사용자 디렉토리에서 : (합계의 거대한 차이)

du -sh *
61M     bin
2.0M    dump-20130124104823.tar.gz
651M    public_html
472K    twitter-2.0.0.gem
11M     wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2

그 이유는 다음과 같습니다.

du -sh /home/user/.rvm/
1.9G    /home/user/.rvm/

du 하위 디렉토리로 내려가는 동안 숨겨진 디렉토리를 계산하지만 현재 디렉토리에서 *는 단순히 .directory_name 패턴과 일치하지 않으므로 현재 디렉토리 숨겨진 요소는 생략됩니다.

알아내는 데 약간의 시간이 걸렸으며 shadyabhi가 추천 한 것처럼 ncdu를 사용했다면 분명했을 것입니다.


1

올바른 명령은 다음과 같습니다. du -hs .* *


일부 추가 정보는이 답변을 받아 들일 수 있습니다.
Ramhound

1

find -maxdepth 1 -exec du -sh "{}" \; | sort -h

이것은 당신에게 제공합니다 :

  • 숨겨진 파일 / 디렉토리의 크기
  • 숨겨지지 않은 파일 / 디렉토리의 크기
  • 현재 디렉토리의 총계

또한 가장 큰 것을 쉽게 볼 수 있도록 출력을 정렬합니다. 또한이 ~/.bash_aliases파일을 별칭으로 만들었습니다 .

alias big='find -maxdepth 1 -exec du -sh "{}" \; | sort -h'
alias sbig='sudo find -maxdepth 1 -exec du -sh "{}" \; | sort -h'

이제 big디렉토리에서 가장 큰 디렉토리를 찾고 sbigsudo 권한이 필요할 때 실행할 수 있습니다 .


0
du -ahd1 | sort -hr | head -10

다음은 -d옵션에 대한 설명입니다 du --help.

-d, --max-depth = N 디렉토리 (또는 --all을 포함한 파일)의 총계가 명령 행 인수보다 N 이하인 경우에만 인쇄합니다. --max-depth = 0은 --summarize와 같습니다.


문제를 해결하는 데 도움이 될 수 있지만 문제를 해결하는 이유 및 / 또는 방법에 대해서는 설명하지 않습니다. 이러한 추가 맥락을 제공하면 장기적인 교육 가치가 크게 향상 될 것입니다. 적용되는 제한 및 가정을 포함하여 설명을 추가하려면 답변을 편집하십시오. 감사.
fixer1234

0

이 명령은 디스크 사용이 디렉토리에 들어가는 지 확인하고 다음을 실행하는 데 도움이됩니다.
"du -sch. [!.] * * | sort -h"

다음은 특정 디렉토리의 디스크 사용량을 계산하는 방법에 대한 데모입니다. Du_sh라는 디렉토리를 만들고 내부에 두 개의 파일 (하나는 숨겨진 10MB와 보통 20MB)을 만듭니다.

nikhil@debian:~$ mkdir Du_sh nikhil@debian:~$ cd Du_sh/ nikhil@debian:~/Du_sh$ dd if=/dev/zero of=.10MB bs=1024 count=10240 10240+0 records in 10240+0 records out 10485760 bytes (10 MB, 10 MiB) copied, 0.0299941 s, 350 MB/s nikhil@debian:~/Du_sh$ nikhil@debian:~/Du_sh$ dd if=/dev/zero of=20MB bs=2048 count=10240 10240+0 records in 10240+0 records out 20971520 bytes (21 MB, 20 MiB) copied, 0.0342258 s, 613 MB/s nikhil@debian:~/Du_sh$ du -sch .[!.]* * 10M .10MB 20M 20MB 30M total nikhil@debian:~/Du_sh$ du -sch .[!.]* * | sort -h 10M .10MB 20M 20MB 30M total nikhil@debian:~/Du_sh$

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