du를 사용하여 파일 크기를 추출하는 방법

du를 사용하여 파일 크기를 추출하는 방법

du패키저 스크립트에서 결과 아카이브의 파일 크기를 가져오는 데 사용하고 있습니다 .

> du -smh archive.zip
51M    archive.zip

51M인쇄할 수 있도록 해당 부분만 변수에 할당하고 싶습니다 .

Archive size: 51M

어떻게 해야 합니까?

답변1

다음과 같이 할 수 있습니다:

$ variable=$(du -smh archive.zip | awk '{print $1}')

세부

awk출력을 열로 나누어 구문 분석합니다. 열 #1의 결과만 원합니다. $( .. ) 코드는 명령을 실행하고 그 결과를 반환합니다.

답변2

또는 stat사용 가능한 경우 해당 프로그램을 사용하십시오(일반적으로 Linux에서는 기본적으로). 사람이 읽을 수 있는 K/M/G 변환은 없지만 숫자만 가져오는 데 다른 것이 필요하지 않으며 멋진 형식 지정 옵션이 있습니다.

sauer@humpy:~$ stat -c "%s" /etc/passwd
2302
sauer@humpy:~$ stat -c "%n size: %s bytes" /etc/passwd /etc/shadow
/etc/passwd size: 2302 bytes
/etc/shadow size: 1389 bytes

답변3

Awk는 필요한 것보다 더 큰 망치입니다. 칼을 사용하여 자르고,

variable=$(du -smh archive.zip | cut -f1 )

관련 정보