Estoy usando du
para obtener el tamaño del archivo de resultados en un script de empaquetado:
> du -smh archive.zip
51M archive.zip
Me gustaría asignar solo la 51M
parte a una variable para poder imprimir:
Archive size: 51M
¿Cómo puedo hacer eso?
Respuesta1
Puedes hacerlo así:
$ variable=$(du -smh archive.zip | awk '{print $1}')
Detalles
awk
analizará la salida dividiéndola en columnas. Quiere solo los resultados de la columna n.° 1. El código $( .. ) ejecutará un comando y devolverá sus resultados.
Respuesta2
O utilice el stat
programa, si está disponible (normalmente en Linux de forma predeterminada). No hay conversión K/M/G legible por humanos, pero tampoco requiere nada más para obtener solo el número/tiene buenas opciones de formato:
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
Respuesta3
Awk es un martillo más grande de lo que necesitas, usa un cuchillo y corta,
variable=$(du -smh archive.zip | cut -f1 )