How can I split one text file into multiple *.txt files?

bash, linux

Solution

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`.

Problem

I got a text file `file.txt` (12 MB) containing: ``` something1 something2 something3 something4 (...) ``` Is there a way to split `file.txt` into 12 *.txt files, let’s say `file2.txt`, `file3.txt`, `file4.txt`, etc.?

Original source