Вопрос: Использование команды разделения Linux для создания файлов N


Мне нужно разделить файлы на гарантированное количество ведер. Размер не обязательно должен быть равным.

Вот моя логика

count = wc -l filename
split_count = (count)/4
split -l split_count filename core_

Иногда, если я изменяю численный номер 4 на другое число, он дает мне N + 1 количество ведер. Есть ли лучший способ создать точно N ведер?


0
2017-10-01 23:30


Источник


Почему это было перенесено из SO? Это, очевидно, вопрос программирования, потому что (1) он имеет тег оболочки, указывающий shell-скрипты; и (2) существует код для вычисления расщепления. - paxdiablo


Ответы:


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

Например, 1001 / 4 является 250 но четыре серии из 250 строк не будут выполнять все 1001 линии, которые у вас есть.

Вы можете изменить свою логику, чтобы увеличить это значение, до тех пор, пока четыре из них не будут по меньшей мере такими же большими, как файл, что-то вроде:

count = wc -l filename
split_count = (count)/4
while split_count * 4 < count:           # Add these
    split_count++                        #   two lines.
split -l split_count filename core_

Вы также можете округлить до следующего кратного N чтобы убедиться, что это достаточно, что-то вроде:

split_count = (count + N - 1) / N

2
2017-10-01 23:42



работал как шарм :) Спасибо