$ split -l 100 input_file output_file
où -l est le nombre de lignes dans chaque fichier. Cela créera :
- output_fileaa
- output_fileab
- output_fileac
- output_filead
- ....
Vous pouvez utiliser l'utilitaire linux bash core split
split -b 1M -d file.txt file
Notez que M ou MB les deux sont OK mais la taille est différente. Mo est 1000 * 1000, M est 1024^2
Si vous voulez séparer par des lignes, vous pouvez utiliser -l paramètre.
MISE À JOUR
a=(`wc -l yourfile`) ; lines=`echo $(($a/12)) | bc -l` ; split -l $lines -d file.txt file
Une autre solution suggérée par Kirill, vous pouvez faire quelque chose comme ce qui suit
split -n l/12 file.txt
Notez que c'est l pas one , split -n a quelques options, comme N , k/N , l/k/N , r/N , r/k/N .
La réponse de John ne produira pas de fichiers .txt comme le souhaite l'OP. Utiliser :
split -b=1M -d file.txt file --additional-suffix=.txt