Как рассчитать общий размер всех файлов из ls-l, используя cut, eval, head, tr, tail, ls и echo - PullRequest
0 голосов
/ 29 сентября 2018
 ls -l | tr -s " " | cut -d " " -f5

Я попробовал вышеуказанный код и получил следующий вывод.

158416 757249 574994 144436 520739 210444 398630 1219080 256965 684782 393445 157957 273642 178980 339245

How toдобавить эти цифры.Я застрял здесь.Пожалуйста, не используйте awk, perl, shell-скрипты и т. Д.

Ответы [ 3 ]

0 голосов
/ 30 сентября 2018

Вы можете попробовать этот способ, но $ ((...)) это сценарий оболочки

eval echo $(( $(ls -l | tr -s ' ' | cut -d ' ' -f5 | tr '\n' '+')  0 ))
0 голосов
/ 30 сентября 2018

Не анализировать вывод ls.Он не предназначен для разбора.Используйте du как с Martin Gergov ответ .Или du и find, или , просто du.

Но если только добавление чисел является единственным фокусом (даже если ввод ненадежен), вот самый ленивый из возможных методов (сначала установите num-utils ):

ls -l | tr -s " " | cut -d " " -f5 | numsum

И есть другие способы, см. также: Как я могубыстро сложить все числа в файле?

0 голосов
/ 29 сентября 2018

Проще всего использовать du.Что-то вроде:

du -h -a -c | tail -n1

Даст вам общую сумму.Вы также можете использовать аргумент -d, чтобы указать, насколько глубоким должен быть обход:

du -d 1 -h -a -c | tail -n1

Вы должны будете уточнить, что вы подразумеваете под «неиспользованием сценариев оболочки», чтобы кто-либопридумать более значимый ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...