Я предложил бы, чтобы Вы поместили LC_NUMERIC=en_US.UTF-8 /usr/bin/printf "%s %s %'d %'d\n" $(/usr/bin/tail -n 31 /var/log/bandwidth)
в файле и chmod это к 770 и помещенный, что имя файла там в crontab.
Можно использовать параллель GNU , чтобы сделать это, поскольку она может ограничить число элементов заданием, а также обеспечить число задания (для уникального названия архива застежки-молнии):
$ touch $(seq 20)
$ find . ! -name "*.zip" -type f -print0 | parallel -0 -N 5 zip arch{#} {}
adding: 1 (stored 0%)
adding: 10 (stored 0%)
adding: 11 (stored 0%)
adding: 12 (stored 0%)
adding: 13 (stored 0%)
adding: 14 (stored 0%)
adding: 15 (stored 0%)
adding: 16 (stored 0%)
adding: 17 (stored 0%)
adding: 18 (stored 0%)
adding: 19 (stored 0%)
adding: 2 (stored 0%)
adding: 20 (stored 0%)
adding: 3 (stored 0%)
adding: 4 (stored 0%)
adding: 5 (stored 0%)
adding: 6 (stored 0%)
adding: 7 (stored 0%)
adding: 8 (stored 0%)
adding: 9 (stored 0%)
$ ls
1 11 13 15 17 19 20 4 6 8 arch1.zip arch3.zip
10 12 14 16 18 2 3 5 7 9 arch2.zip arch4.zip
опция -N 5
ограничивает количество файлов к 5 за архив и представлена застежка-молния
вместо {}
{#}
(дословно, чтобы не быть замененной вами во время вызова), заменяется числом задания, приводящим к arch1.zip
, arch2.zip
и т.д.
, опция-print0
к находит
и -0
опция к , параллель
в тандеме удостоверяется, что имена файлов со специальными символами правильно обрабатываются.
Альтернатива только для оболочки: обработка пакетов COUNT файлов через «$ {@: START: COUNT}»
(диапазон позиционные параметры) и сдвигают COUNT
при увеличении счетчика c
для именования архивов:
set -- * c=1 while (($#)); do if [ $# -ge COUNT ]; then zip ${c}.zip "${@:1:COUNT}" c=$((c+1)) shift COUNT else zip ${c}.zip "${@}" shift $# fi done
Принятый ответ меня устроил. :) НО, если у вас нет доступа к параллельному серверу (кто знает почему), вот альтернатива, которую я придумал раньше:
find . ! -name '*.zip' -type f | xargs -n 500 | awk '{system("zip myarch"NR".zip "$0)}'
Которая создаст myarch1.zip, myarch2.zip, myarch3.zip и т. Д. { {1}} Вы можете использовать трюк -0, который предложил Антон, если у вас странные имена файлов.