Cómo extraer el tamaño del archivo con du

Cómo extraer el tamaño del archivo con du

Estoy usando dupara 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 51Mparte 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

awkanalizará 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 statprograma, 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 )

información relacionada