Usando il comando split di Linux per creare N Files


0

Devo dividere i file in un numero garantito di bucket. Le dimensioni non devono essere uguali.

Ecco la mia logica

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

A volte se cambio il numero di 4 in un altro numero mi dà N + 1 numero di secchi. C'è un modo migliore per creare esattamente N secchi?


1
Perché è stato migrato da SO? Questa è chiaramente una domanda di programmazione perché (1) ha un tag shell, che indica scripting di shell; e (2) esiste un codice per calcolare il conteggio delle divisioni.

Risposte:


2

Probabilmente è perché il risultato dell'uso dell'aritmetica intera a volte causa un valore leggermente troppo piccolo.

Ad esempio, 1001 / 4è , 250ma quattro lotti di 250 linee non faranno tutte le 1001 linee che hai.

Puoi modificare la tua logica per aumentare quel valore fino a quando quattro di loro sono grandi almeno quanto il file, qualcosa del tipo:

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_

Puoi anche arrotondare al multiplo successivo di Nper assicurarti che sia abbastanza, qualcosa del tipo:

split_count = (count + N - 1) / N
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.