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

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

du -sh dir_name

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



답변

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

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

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

사용하고 du *있습니까?


답변

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

du -hs .[^.]*


답변

올바른 명령은 다음과 같습니다. 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그들을 나열하지 않습니다이!


답변

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

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


답변

그렇지 않습니다. 예:

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

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를 사용했다면 분명했을 것입니다.


답변

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


답변

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 권한이 필요할 때 실행할 수 있습니다 .