I would like to recommend the faSplit utility from the UCSC Genome Browser suite. However, I didn't found a downloaded binary from their site, but you can compile it yourself.
faSplit - Split an fa file into several files.
faSplit how input.fa count outRoot
where how is either 'about' 'byname' 'base' 'gap' 'sequence' or 'size'.
Files split by sequence will be broken at the nearest fa record boundary.
Files split by base will be broken at any base.
Files broken by size will be broken every count bases.
faSplit sequence estAll.fa 100 est
This will break up estAll.fa into 100 files
(numbered est001.fa est002.fa, ... est100.fa
Files will only be broken at fa record boundaries
faSplit base chr1.fa 10 1_
This will break up chr1.fa into 10 files
faSplit size input.fa 2000 outRoot
This breaks up input.fa into 2000 base chunks
faSplit about est.fa 20000 outRoot
This will break up est.fa into files of about 20000 bytes each by record.
faSplit byname scaffolds.fa outRoot/
This breaks up scaffolds.fa using sequence names as file names.
Use the terminating / on the outRoot to get it to work correctly.
faSplit gap chrN.fa 20000 outRoot
This breaks up chrN.fa into files of at most 20000 bases each,
at gap boundaries if possible. If the sequence ends in N's, the last
piece, if larger than 20000, will be all one piece.
-verbose=2 - Write names of each file created (=3 more details)
-maxN=N - Suppress pieces with more than maxN n's. Only used with size.
default is size-1 (only suppresses pieces that are all N).
-oneFile - Put output in one file. Only used with size
-extra=N - Add N extra bytes at the end to form overlapping pieces. Only used with size.
-out=outFile Get masking from outfile. Only used with size.
-lift=file.lft Put info on how to reconstruct sequence from
pieces in file.lft. Only used with size and gap.
-minGapSize=X Consider a block of Ns to be a gap if block size >= X.
Default value 1000. Only used with gap.
-noGapDrops - include all N's when splitting by gap.
-outDirDepth=N Create N levels of output directory under current dir.
This helps prevent NFS problems with a large number of
file in a directory. Using -outDirDepth=3 would
-prefixLength=N - used with byname option. create a separate output
file for each group of sequences names with same prefix
of length N.