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 )