답변:
실제로는 다음과 같은 증거가 있습니다.
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. 더 멋진 디스플레이 방법 외에도 기능상의 차이는 분명하지 않습니다.
d디렉토리를 삭제 하는 바인딩을 제공 하므로 인터페이스에서 직접 정리할 수 있습니다.
그렇지 않습니다. 예:
홈 디렉토리에서 : (한 명의 사용자 만 존재)
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를 사용했다면 분명했을 것입니다.
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 권한이 필요할 때 실행할 수 있습니다 .
du -ahd1 | sort -hr | head -10
다음은 -d옵션에 대한 설명입니다 du --help.
-d, --max-depth = N 디렉토리 (또는 --all을 포함한 파일)의 총계가 명령 행 인수보다 N 이하인 경우에만 인쇄합니다. --max-depth = 0은 --summarize와 같습니다.
이 명령은 디스크 사용이 디렉토리에 들어가는 지 확인하고 다음을 실행하는 데 도움이됩니다.
"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$
... you maybe using "du *" ?