У меня есть большое количество папок, каждая из которых содержит довольно много файлов разного размера (от нескольких байтов до 400 КБ или около того), в основном меньших по размеру. Мне нужно получить фактический (не использование диска) размер этих папок. Есть ли способ сделать это с помощью команды, как 'du'?
4 ответа
Для ls
стандартно показывать истинные размеры файлов по умолчанию, и я только что это подтвердил. Так:
ls -l <yourfiles>
Чтобы подвести итоги:
ls -l <yourfiles> | awk '{sum+=$5} END {print sum}'
Если вашему подсчету нужно включить файлы в подкаталоги, общее решение - использовать find
для вызова ls
:
find <yourdir>/. -type f -exec ls -l '{}' \; | awk '{sum+=$5} END {print sum}'
Вы можете запросить итоги Mac-world (включая ветки ресурсов) следующим образом:
# Put this in a shell function or script, 'macTotal'
osascript - "${1:-.}" <<\EOF | perl -Mbignum -lpe '$_+=0,"\n"'
on run {arg}
alias POSIX file arg
tell application "System Events" to get size of result
end run
EOF
$ macTotal ~/Library
4465742628
AppleScript печатает число в научной нотации. Код Perl - неаккуратный способ расширить научную нотацию.
Если у вас все в порядке с чтением чисел из графического интерфейса, просто откройте информационное окно папки в Finder. Указанный размер такой же, как и в системных событиях AppleScript.
Если вы просто заботитесь о разветвлениях данных, я бы пошел с чем-то похожим на ответ pra, но с использованием stat
вместо ls
и xargs
вместо -exec
для большей эффективности.
$ find . -type f -print0 | xargs -0 stat -f %z | awk '{t+=$1}END{print t}'
4461971024
Чтобы увидеть всего одну конкретную папку, используйте:
du -s /path_to /specific_folder /
Чтобы просмотреть общее количество каждой папки в одной конкретной папке, используйте звездочку:
du -s /path_to /specific_folder /*
Если вам не принадлежат все файлы в этих каталогах, используйте sudo, чтобы убедиться, что все считается.
Изменить: Ах, я понимаю, что вы спрашиваете сейчас. Ты хочешь:
du -sk /path_to /specific_folder /
Вы можете запустить wc -c
для каждого из файлов. Это должно вернуть количество символов в каждом файле. Это может занять некоторое время, так как он фактически читает каждый файл и считает символы.