정말 이상한 "du" 행동

정말 이상한 "du" 행동

/etc/*.conf이 경우 특정 폴더에 있는 파일의 크기를 인쇄하고 싶습니다.

내가 사용할 때 :

cd /etc

du -ch $(ls | grep .conf) | tail -1 | cut -f1 

나는 120K를 얻습니다.

내가 사용할 때 :

du -bch $(ls | grep .conf) | tail -1 | cut -f1

나는 46K를 얻습니다. 크기는 동일하지만 바이트 단위여야 합니다. 그렇죠? 그럼 뭔가가 있어야 하는 거죠 120000, 그렇죠?

내가 사용할 때 :

du -bsh $(ls | grep .conf) | tail -1 | cut -f1

1.3K 받았는데 이 사람은 누구죠?

답변1

du -hc파일 크기를 파일 시스템 블록 크기(일반적으로 4K)의 배수로 표시합니다. 이는 나열된 파일의 실제 디스크 사용량입니다. 이 -h옵션은 사람이 읽을 수 있는 형식(K/M/G)으로 치수를 인쇄하고, 이 -c옵션은 목록 끝에 전체 치수를 인쇄합니다.

[root@testvm1 etc]# du -hc *.conf
4.0K    asound.conf
4.0K    chrony.conf
4.0K    dracut.conf
....
4.0K    vconsole.conf
4.0K    yum.conf
104K    total

du -bch를 사용하면 -b인수는 파일 크기를 바이트 단위로 나열합니다. 그러나 이 옵션은 --apparent-size디스크 사용량이 아닌 파일의 겉보기 크기를 표시한다는 의미이기도 합니다. 이로 인해 일반적으로 총계가 낮아집니다.

[root@testvm1 etc]# du -bch *.conf
55      asound.conf
1.1K    chrony.conf
1.3K    dracut.conf
....
41      vconsole.conf
970     yum.conf
32K     total

du -sh-s각 매개변수의 전체 크기를 표시하는 이 옵션을 사용합니다 . 이 옵션은 일반적으로 디렉터리와 함께 사용됩니다. 이 옵션은 파일 목록에 대해 사용될 때 -s특별한 출력을 생성하지 않습니다 . 명령의 출력은 du -bsh목록의 마지막 파일 크기일 가능성이 높습니다.


-b옵션은 --apparent-size --block-size=1단위를 바이트로 유지하면서 블록 크기 계산을 사용하려면 이 --block-size옵션만 사용하십시오.

[root@testvm1 etc]# du --block-size=1 -c *.conf
4096    asound.conf
4096    chrony.conf
4096    dracut.conf
...
4096    vconsole.conf
4096    yum.conf
106496  total

답변2

du없이 결과를 확인해야 합니다.| tail -1 | cut -1

(-h 옵션을 무시하고 k, M만 추가하세요...)

(기준으로http://man7.org/linux/man-pages/man1/du.1.html)

-c모든 파일의 디스크 사용량과 총계를 인쇄합니다. 파일 시스템 형식에 따라 파일의 디스크 사용량이 실제 크기보다 클 수 있습니다.)

-bc디스크에서 사용하는 크기가 아닌 "실제" 크기를 인쇄합니다.

-bs제공된 각 파일/폴더의 총 "실제" 크기만 인쇄됩니다 du. 각 파일을 자세히 살펴보면 각 *.conf 파일의 크기가 계산되며 마지막 줄은 사용자가 제공한 마지막 *.conf 파일의 크기입니다.

추신: 아마도 다음과 같이 할 수 있습니다. du -bch *.conf결과에 대해 grep 대신 ls를 실행하는 것입니다.

관련 정보