Справа в точці: Apple TextEdit на /Applications/TextEdit.app
Якщо ви обчислите фізичний розмір, echo "$(/usr/bin/du -k -d 0 /Applications/TextEdit.app | /usr/bin/awk '{print $1}') * 1024" | /usr/bin/bc -l
ви отримаєте (в моєму випадку 10.11.6) розмір 4538368 байт .
Однак, якщо ви відкриєте вікно Інформація в Finder, воно скаже вам, що фізичний розмір значно більший: 8,6 Мб на диску , майже вдвічі більше.
Зрозуміло, чому: Apple використовувала стиснення HFS на TextEdit. Запуск стороннього інструменту afsctool (який можна встановити за допомогою Homebrew) дає такий результат:
/usr/local/bin/afsctool /Applications/TextEdit.app
/Applications/TextEdit.app:
Number of HFS+ compressed files: 693
Тепер, очевидно, macOS знає нестиснений фізичний розмір, про що свідчить значення розміру на диску у вікні Інформація про Finder.
Моє запитання, чи є спосіб отримати цю інформацію лише в командному рядку, тобто спосіб показати:
(a) нестиснений фізичний розмір (використання диска) файлу, стисненого HFS, тобто файлу, для якого /usr/bin/stat -f %f
повертається "32" (навіть якщо це "524320" чомусь у TextEdit), і
(b) нестиснений загальний фізичний розмір (використання диска) каталогу або пакета, який містить стиснуті файли HFS.
Примітка: для обчислення розміру слід використовувати лише натурні команди macOS, не використовуючи дані, що залежать від прожектора, наприклад, від mdls
команди, яка баггі, а іноді повертається (null)
для kMDItemPhysicalSize
ключа, окрім того, що деякі користувачі взагалі відключили прожектор.