How can I split one text file into multiple *.txt files?
Solution 1:
You can use the Linux Bash core utility split
:
split -b 1M -d file.txt file
Note that M
or MB
both are OK but size is different. MB is 1000 * 1000, M is 1024^2
If you want to separate by lines you can use -l
parameter.
UPDATE
a=(`wc -l yourfile`) ; lines=`echo $(($a/12)) | bc -l` ; split -l $lines -d file.txt file
Another solution as suggested by Kirill, you can do something like the following
split -n l/12 file.txt
Note that is l
not one
, split -n
has a few options, like N
, k/N
, l/k/N
, r/N
, r/k/N
.
Solution 2:
$ split -l 100 input_file output_file
where -l
is the number of lines in each files. This will create:
- output_fileaa
- output_fileab
- output_fileac
- output_filead
- ....
Solution 3:
CS Pei's answer won't produce .txt files as the OP wants. Use:
split -b=1M -d file.txt file --additional-suffix=.txt