LINUX.ORG.RU

Проблема конкатенации файла в bash'e


0

1

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

подскажите nix утилиты.. а то потерялся совсем.


подскажите nix утилиты.. а то потерялся совсем.

bc для расчета длины и кол-ва повторов

cat для конкатенации

sdio ★★★★★
()
COUNT=$(( $FILESIZE/$(stat -c %s $FILENAME) ))
for i in $(seq 1 $COUNT); do
    cat $FILENAME;
done >$RESULTFILE
schizoid ★★★
()
Ответ на: комментарий от drBatty

В таком случае цикл закончится, когда размер файла уже превысит предел. Тогда уж так:

cp file total; while [ $((`stat -c%s total` + `stat -c%s file`)) -le 12345 ]; do cat file >> total; done

tiandrey ★★★★★
()
Ответ на: комментарий от tiandrey

В таком случае цикл закончится, когда размер файла уже превысит предел. Тогда уж так:

ну это мелочь. Тогда уж вынесете + `stat -c%s file` из цикла, зачем это 100500 раз считать?

drBatty ★★
()

Дата регистрации: 20.05.2012 10:00:38

Лабораторки для допуска к сессии?

anonymous
()
Ответ на: комментарий от drBatty

Не, это как раз не мелочь, ибо это основное условие - не превысить размер. Про первое cp верно, ибо с ним можно превысить предел, если предел меньше размера изначального файла. Мелочь -

Тогда уж вынесете + `stat -c%s file` из цикла, зачем это 100500 раз считать?

Это не влияет на правильность работы, на скорость - чуть больше, чем совсем не влияет.

tiandrey ★★★★★
()
Ответ на: комментарий от tiandrey

Не, это как раз не мелочь

мелочь. Это был ответ на вопрос:

подскажите nix утилиты.. а то потерялся совсем.

а не на вопрос «решите задачу, заплачу денег». как узнать и проверить размер файла я написал, должен же ТС что-то для сам сделать?

Это не влияет на правильность работы, на скорость - чуть больше, чем совсем не влияет.

можешь поверить моему опыту: лишний eval в bash стОит очень дорого. да и вообще bash очень тормозной, потому такие оптимизации традиционно приносят в bash'е неплохой профит. Что до правильности - это пусть ТС голову ломает, или денег платит. Мне это уже не интересно.

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.