![(ls) 명령이 정확한 크기를 표시하지 않습니다 - 이상한 출력](https://linux55.com/image/87159/(ls)%20%EB%AA%85%EB%A0%B9%EC%9D%B4%20%EC%A0%95%ED%99%95%ED%95%9C%20%ED%81%AC%EA%B8%B0%EB%A5%BC%20%ED%91%9C%EC%8B%9C%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4%20-%20%EC%9D%B4%EC%83%81%ED%95%9C%20%EC%B6%9C%EB%A0%A5.png)
내 하드 드라이브에 있는 파일의 크기를 정확한 바이트 단위로 찾으려고 하는데, 크기가 너무 커질 때마다 숫자가 이상해집니다(예: 1.98329e+12). 이 작업을 중지하거나 정확한 바이트로 변환할 수 있나요?
명령은
ls -lR | grep -v '^d' | awk '{total += $5} END {print "Total:", total}'
- 정확한 바이트 표시를 중지하기 전의 컷오프 지점은 약 500GB인 것 같습니다.
du -sb
이 명령은 디렉터리의 크기에 관계없이 정확한 바이트를 올바르게 표시합니다.- Ubuntu Gnome 15.10 64비트(일본어 및 영어) 및 Linux Mint 17.3 Cinnamon 64비트(일본어)를 사용해 보았습니다.
- 내 드라이브는 NTFS이므로 하나를 ext4로 포맷하고 파일을 복사해 보았습니다. 결과는 NTFS와 동일합니다.
답변1
ls
숫자가 출력되는 방식과는 아무 관련이 없으며 모두 awk
.
매뉴얼 페이지에서는 awk
기본 숫자 출력 형식이 임을 보여줍니다 .6g
. 이는 두 배 길이 부동 소수점 숫자가 지수 형식(표시되는 내용) 또는 6자리 정밀도의 십진수 형식을 사용하여 출력된다는 의미입니다.
아래와 같이 명시적인 출력 형식으로 변경할 수 있습니다.
echo 123456789012345 | awk '{printf "Total: %.6g\n", $1}'
Total: 1.23457e+14
echo 123456789012345 | awk '{printf "Total: %.0f\n", $1}'
Total: 123456789012345