Это два разных вычисления из «M» (мегабайты или мебибайты)
Префикс SI «мега» означает 10 ^ 6, что похоже на то, что использует Finder. Фактический размер файла вашего примера составляет около 360 400 000 байт.
Однако в вычислениях также часто используется двоичный префикс «mebi», который равен 2 ^ 20 (1048576).Если вы возьмете 360 400 000 и разделите на 2 ^ 20, вы получите 343,7, что округляется до 344M, которое вы видите в терминале.
Ни один из префиксов не является «правильным» (хотя некоторые утверждают обратное), и, к сожалению, некоторые программы используют неоднозначный суффикс «M» вместо «MB» или «MiB». Некоторые программы позволяют использовать любой префикс.
Ваш пример QuickTime все еще отличается. В столбце указано «Размер данных», что не совпадает с размером файла, поскольку в ваших медиафайлах содержится дополнительная служебная информация.
Solución completajq
:
jq '[ group_by(.Category)[0] |.[0].Category as $k
| { ($k): (reduce.[] as $o
({};.[($o.Filesystem)] = ($o | del($o.Category, $o.Filesystem)))
)
}
]' input.json
En caso de que la tecla "Filesystem"
sea un número -, cambie .[($o.Filesystem)]
a la siguiente.[($o.Filesystem | tostring)]
La salida:
[
{
"Disk Partition Details": {
"udev": {
"Size": "3.9G",
"Used": 0,
"Avail": "3.9G",
"Use%": "0%",
"Mounted": "/dev"
},
"tmpfs": {
"Size": "799M",
"Used": "34M",
"Avail": "766M",
"Use%": "5%",
"Mounted": "/run"
}
}
}
]
Вы оказываете себе медвежью услугу, перестраивая JSON таким образом.
Исходный JSON выглядит нормально.
При этом, если вы хотите получить все размеры для udev
файловых систем, вы должны
jq '.[] | select(.Filesystem == "udev").Size' file.json
Простая операция, подобная этой, над реорганизованным файлом будет
jq '.[] |."Disk Partition Details".udev.Size' file1.json
Кроме того, переупорядоченный файл поддерживает только одну точку монтирования для каждого типа файловой системы, насколько я понимаю. Если бы у вас было несколько tmpfs
файловых систем, то я не знаю, куда бы вы их поместили.