Я хочу проверить размер папки в MacOS. Путь к папке «/ Volumes / TSAIYUB / Finished / test folder». Я запускаю эту команду в терминале:
du -s /Volumes/TSAIYUB/Finished/test\ folder
Вывод 9609728. Затем я запускаю эту команду:
du -sh /Volumes/TSAIYUB/Finished/test\ folder
Вывод 4,6 ГБ. В AppleScript я запускаю этот код:
on getSize(posixPath)
--the code is from:
--https://forum.latenightsw.com/t/getting-file-folder-sizes-system-events-vs-info-for/904
set cmdStr to "du -s " & quoted form of posixPath
set itemSizeStr to (do shell script cmdStr)
set itemSize to (first word of itemSizeStr)
--set itemSizeGB to itemSize / (1024 ^ 3)
return itemSize
end getSize
my getSize("/Volumes/TSAIYUB/Finished/test folder")
Выходное значение равно 9609728. То же самое с выходным значением "du -s". Затем я пытаюсь преобразовать это значение в удобочитаемое человеком в AppleScript. Я нахожу этот код на Inte rnet:
on convertByteSize(byteSize, KBSize, decPlaces)
--the code is from:
--https://macscripter.net/viewtopic.php?id=37035
if (KBSize is missing value) then set KBSize to 1000 + 24 * (((system attribute "sysv") < 4192) as integer)
if (byteSize is 1) then
set conversion to "1 byte" as Unicode text
else if (byteSize < KBSize) then
set conversion to (byteSize as Unicode text) & " bytes"
else
set conversion to "Oooh lots!" -- Default in case yottabytes isn't enough!
set suffixes to {" K", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"}
set dpShift to ((10 ^ 0.5) ^ 2) * (10 ^ (decPlaces - 1)) -- (10 ^ decPlaces) convolutedly to try to shake out any floating-point errors.
repeat with p from 1 to (count suffixes)
if (byteSize < (KBSize ^ (p + 1))) then
tell ((byteSize / (KBSize ^ p)) * dpShift) to set conversion to (((it div 0.5 - it div 1) / dpShift) as Unicode text) & item p of suffixes
exit repeat
end if
end repeat
end if
return conversion
end convertByteSize
my convertByteSize(9609728, 1000, 0)
Выход 10 МБ. WEIRD! Я погуглил "как команда du преобразует размер байта в читабельный человек", но ничего полезного найти не могу. И код этой топи c в основном на Java, C или другом языке. Я их не понимаю, так как я пишу только простой AppleScript для автоматизации. Надеюсь, кто-нибудь подскажет, что не так с этим обработчиком AppleScript!