Разделение файла через скрипт оболочки - PullRequest
0 голосов
/ 16 февраля 2011

Я хочу разделить файл на куски по 64 МБ.Я хочу узнать нет.частей через сценарий оболочки.Мой скрипт выдает следующую ошибку: строка 3: 134M: слишком большое значение для базы (токен ошибки "134M") Может кто-нибудь мне помочь.Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 16 февраля 2011
file=foo
chunks=$(echo "$(wc -c < "$file") / (64*10^6)" | bc -l)

или

file=foo
chunks=$(echo "$(wc -c < "$file") / (2^26)" | bc -l)

В зависимости от того, означает ли 64 МБ 64000000 или 67108864 для вас. Опустите -l, если вы хотите усеченное целое число.

2 голосов
/ 16 февраля 2011

Используйте split -b 64m yourfile.Он разделит ваш файл на куски для вас с именами xa, xb, xc и т. Д.

Отредактируйте в ответ на ваш комментарий:

Вы можете взять верхний предел отношения размера файла и64 МБ, это даст вам необходимое количество файлов, если максимальный размер файла составляет 64 МБ.Последний файл может быть размером менее 64 МБ.

Один вкладыш может выглядеть так:

stat -f %z yourfile | perl -pi -e 'use POSIX; $_ = ceil $_ / (64 * 1024 * 1024);'

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