Существует ли способ подвести итог размера перечисленных файлов?

Imagemagick может сделать это за один шаг:

$ convert in.pdf -crop 50%x0 +repage out.pdf
20
29.09.2011, 09:59
5 ответов

В первую очередь, необходимо использовать прямые одинарные кавычки ('), не наклоненные (`).

awk встроенный сценарий мог быть следующие:

ls -lrt | awk '{ total += $5 }; END { print total }'

таким образом, никакая потребность инициализировать total (awk инициализирует его для обнуления), и никакая потребность циклично выполниться, awk уже выполняет сценарий на каждой строке входа.

26
27.01.2020, 19:43
  • 1
    Таким образом, острота была бы этим: find . -name \*.extract.sys -size +1000000c -exec ls -lrt {} \; | awk '{ total += $5 }; END { print total }' –  helt 27.04.2016, 18:35

@enzotib уже указал на то, что Ваша синтаксическая ошибка - я собираюсь уйти на небольшой касательной.

Подведение итогов столбца чисел является одной из тех вещей, которая продолжает открываться. Я закончил с этой функцией оболочки:

sumcol() 
{ 
    awk "{sum+=\$$1} END {print sum}"
}

С этим Ваше решение становится:

ls -lrt | sumcol 5

Это суммирует числа в столбце 5 и распечатает значение.

16
27.01.2020, 19:43
  • 1
    В действительности я задавался вопросом, почему нет стандартной утилиты для этого. –  enzotib 29.09.2011, 12:34
  • 2
    Идет прямо в мой .aliases файл. –  Konrad Rudolph 29.09.2011, 15:04

Вот другой способ сделать это при помощи du:

find . -name \*.extract.sys -size +1000000c -print0 | du -c --files0-from=- | awk 'END{print $1}'
14
27.01.2020, 19:43
  • 1
    Превосходное использование du. Хороший пример. Как дополнительное преимущество, можно добавить "-h" опцию к du для получения вывода на Концерте. Затем Вы не должны считать цифры и такой. Я просто запустил тест на наборе файлов, которые составляют приблизительно 1 188 800 кбайт в размере. Насколько большой это? Неважно, du -ch --files0-from=- говорит мне, что мое общее количество "9.0G". Sweeeet! –  Mike S 09.11.2016, 20:21
  • 2
    Сладкое, превосходное использование du! –  haridsv 25.01.2017, 06:53
  • 3
    Кроме того, если Вы только интересуетесь общим количеством, затем передаете вывод du по каналу к tail -1. –  haridsv 25.01.2017, 07:00

В случае, если HP-UX find также имеет -printf опция, которая была бы полезна для создания формулы для bc вычислять:

( find . -name \*.extract.sys -size +1000000c -printf '%s+'; echo 0 ) | bc

Если формула становится слишком большой, она может быть вычислена пошаговая:

( find . -name \*.extract.sys -size +1000000c -printf 's+=%s\n'; echo s ) | bc
4
27.01.2020, 19:43

С GNU найти :

find -name '*.extract.sys' -size +1000000c -printf '%s\n' | jq -s add

С GNU stat :

find . -name '*.extract.sys' -size +1000000c -exec stat -c%s '{}' + | jq -s add

С BSD stat :

find . -name '*.extract.sys' -size +1000000c -exec stat -f%z '{}' + | jq -s add
1
27.01.2020, 19:43

Теги

Похожие вопросы