Linux 分割和合并文件_split 命令的使用

By | 最新修改:2024-10-30

当在 Linux 下遇到需要分割的大文件时,使用 split 命令进行分割,将它们分割成若干个小文件,到使用时再合并起来,合并后的文件与分割前的文件内容是一模一样的。

本文详解如何使用 split 命令在 Linux 下分割文件,并且使用 cat 命令合并文件。

总结一下 split 命令的选项:

  1. -a N--suffix-length=N:生成后缀的长度;
  2. --additional-suffix=SUFFIX:追加额外的后缀;
  3. -b SIZE 或者 --bytes=SIZE:指定每个输出文件的最大大小;
  4. -C SIZE 或者 --line-bytes=SIZE:每行一次切割的字节上限;
  5. -d:使用数字作为后缀;
  6. --numeric-suffixes[=FROM]:指定文件名后缀的开始数字;
  7. -x:使用十六进制数字为文件名后缀;
  8. --hex-suffixes[=FROM]:指定十六进制数字为后缀时的开始数字,此时仍然输入的是10进制的数字;
  9. -l NUMBER 或者 --lines=NUMBER:一次分割的行数;
  10. -t SEP--separator=SEP:定义列分割符;
  11. -u 或者 --unbuffered :立即输出到文件;
  12. --verbose:打印诊断信息。

Linux split 命令

分割和合并文件的典型举例

  1. 这是要分割的大文件:
    ls -l -h
    

    执行结果:

    total 3.9G
    drwxrwxr-x 2 username username 4.0K 3月   2 16:46 ./
    drwxr-xr-x 3 username username 4.0K 3月   2 16:46 ../
    -rw-rw-r-- 1 username username 3.9G 3月   2 16:46 testfile.bin
    
  2. 以两个 G 为单位分割文件,并且最终文件以 testfile.bin-split- 为前缀:
    split -b 2GB testfile.bin testfile.bin-split-
    
  3. 上面的命令分割出若干个文件:

    再看该目录及文件的大小:

    ls -l -h
    

    执行结果:

    total 7.7G
    drwxrwxr-x 2 username username 4.0K 3月   2 16:50 ./
    drwxr-xr-x 3 username username 4.0K 3月   2 16:46 ../
    -rw-rw-r-- 1 username username 3.9G 3月   2 16:46 testfile.bin
    -rw-rw-r-- 1 username username 1.9G 3月   2 16:50 testfile.bin-split-aa
    -rw-rw-r-- 1 username username 1.9G 3月   2 16:50 testfile.bin-split-ab
    -rw-rw-r-- 1 username username  92M 3月   2 16:50 testfile.bin-split-ac
    
  4. 合并文件:
    cat testfile.bin-split-* > testfile.bin-result
    
  5. 用 MD5 校验原文件与合并后的文件:
    username@15:33:13:~$ md5sum testfile.bin-result testfile.bin
    71d6441a37e7bbd0799ca2c14ae5761c  testfile.bin-result
    71d6441a37e7bbd0799ca2c14ae5761c  testfile.bin
    

    经过 MD5 的校验,以上的两个文件内容一致。


split 命令的基本用法

split 命令的基本格式:split [参数] 文件名 输出文件的前缀后缀

上述经典举例中的文件分割命令 split -b 2GB testfile.bin testfile.bin-split- 中:

  1. -b 表示分割后的文件每个的最大大小,格式为“数字单位”,比如“2GB”、“50MB”、“100KB”等等。
  2. testfile.bin 表示分割源文件。按照上面的命令,要将此文件分割为若干个最大为 2GB 的文件。

  3. testfile.bin-split- 表示分割后各个文件的文件名前缀。

    依上例来说,生成的分割文件以“英文字母”为后缀的文件名,第一个文件以“-aa”为结尾命名,第二个文件以“-ab”命名。

    若是不指定前缀,就以“x”为前缀。

    像这样:

    username@14:04:41:split-test$ ll -h
    total 7.5G
    drwxrwxr-x  2 username username 4.0K Dec 26 14:04 ./
    drwxrwxrwt 33 root   root    12K Dec 26 14:04 ../
    -rw-rw-r--  1 username username 7.5G Dec 26 13:35 testfile.bin
    
    username@13:56:26:split-test$ split -b 100MB testfile.bin
    
    username@13:57:32:split-test$ ll -h
    total 15G
    drwxrwxr-x  2 username username 4.0K Dec 26 13:57 ./
    drwxrwxrwt 33 root   root    12K Dec 26 14:00 ../
    -rw-rw-r--  1 username username 7.5G Dec 26 13:35 testfile.bin
    -rw-rw-r--  1 username username  96M Dec 26 13:56 xaa
    -rw-rw-r--  1 username username  96M Dec 26 13:56 xab
    -rw-rw-r--  1 username username  96M Dec 26 13:56 xac
    ...
    -rw-rw-r--  1 username username  96M Dec 26 13:56 xax
    -rw-rw-r--  1 username username  96M Dec 26 13:56 xay
    -rw-rw-r--  1 username username  96M Dec 26 13:56 xaz
    -rw-rw-r--  1 username username  96M Dec 26 13:56 xba
    -rw-rw-r--  1 username username  96M Dec 26 13:56 xbb
    -rw-rw-r--  1 username username  96M Dec 26 13:56 xbc
    ...
    -rw-rw-r--  1 username username  96M Dec 26 13:57 xbx
    -rw-rw-r--  1 username username  96M Dec 26 13:57 xby
    -rw-rw-r--  1 username username  96M Dec 26 13:57 xbz
    -rw-rw-r--  1 username username  96M Dec 26 13:57 xca
    -rw-rw-r--  1 username username  96M Dec 26 13:57 xcb
    -rw-rw-r--  1 username username  96M Dec 26 13:57 xcc
    ...
    -rw-rw-r--  1 username username  96M Dec 26 13:57 xcx
    -rw-rw-r--  1 username username  96M Dec 26 13:57 xcy
    -rw-rw-r--  1 username username  96M Dec 26 13:57 xcz
    -rw-rw-r--  1 username username  96M Dec 26 13:57 xda
    -rw-rw-r--  1 username username  96M Dec 26 13:57 xdb
    

split 的参数选项

以下的资料来源于 Linux 命令行下执行 split --help 获得:

username@13:16:50:~$ split --help
Usage: split [OPTION]... [FILE [PREFIX]]
Output pieces of FILE to PREFIXaa, PREFIXab, ...;
default size is 1000 lines, and default PREFIX is 'x'.

With no FILE, or when FILE is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.
  -a, --suffix-length=N   generate suffixes of length N (default 2)
      --additional-suffix=SUFFIX  append an additional SUFFIX to file names
  -b, --bytes=SIZE        put SIZE bytes per output file
  -C, --line-bytes=SIZE   put at most SIZE bytes of records per output file
  -d                      use numeric suffixes starting at 0, not alphabetic
      --numeric-suffixes[=FROM]  same as -d, but allow setting the start value
  -x                      use hex suffixes starting at 0, not alphabetic
      --hex-suffixes[=FROM]  same as -x, but allow setting the start value
  -e, --elide-empty-files  do not generate empty output files with '-n'
      --filter=COMMAND    write to shell COMMAND; file name is $FILE
  -l, --lines=NUMBER      put NUMBER lines/records per output file
  -n, --number=CHUNKS     generate CHUNKS output files; see explanation below
  -t, --separator=SEP     use SEP instead of newline as the record separator;
                            '\0' (zero) specifies the NUL character
  -u, --unbuffered        immediately copy input to output with '-n r/...'
      --verbose           print a diagnostic just before each
                            output file is opened
      --help     display this help and exit
      --version  output version information and exit

以下详细解析 split 命令的使用方法。

1. 默认的前缀与分割后文件的大小

  1. 输出的文件块以“前缀aa”、“前缀ab”…“前缀ax”、“前缀ay”、“前缀az”、“前缀ba”等等方式命名。
  2. 默认的文件块大小为 1000 行,以及默认的前缀为“x”(英文字母小写“x”)。

  3. 若是不指定文件,或文件为“-”(减号),那么就读取标准输入。

    username@14:40:44:split-test$ split -b 2GB - < testfile.bin
    username@14:42:04:split-test$ ll -h
    total 15G
    drwxrwxr-x  2 username username 4.0K Dec 26 14:41 ./
    drwxrwxrwt 34 root   root    12K Dec 26 14:42 ../
    -rw-rw-r--  1 username username 1.9G Dec 26 14:41 xaa
    -rw-rw-r--  1 username username 1.9G Dec 26 14:41 xab
    -rw-rw-r--  1 username username 1.9G Dec 26 14:41 xac
    -rw-rw-r--  1 username username 1.9G Dec 26 14:41 xad
    
    # 上面的分割命令等同于
    username@14:40:44:split-test$ split -b 2GB testfile.bin
    
  4. 长选项的值与短选项的值是一样的,只是使用方式不同。

    比如:长选项--suffix-length=N 与短选项 -a N 的效果是一样的。

2. 设置生成后缀的的长度 -a

设置生成后缀的的长度,默认为“2”。

用法: -a N 或者 --suffix-length=N,“N” 表示后缀的长度,默认为“2”。

举例:

username@14:56:22:split-test$ split -b 200MB -a 3 testfile.bin
username@14:56:34:split-test$ ll -h
total 1.9G
drwxrwxr-x  2 username username 4.0K Dec 26 14:56 ./
drwxrwxrwt 34 root   root    12K Dec 26 14:56 ../
-rw-rw-r--  1 username username 954M Dec 26 14:46 testfile.bin
-rw-rw-r--  1 username username 191M Dec 26 14:56 xaaa
-rw-rw-r--  1 username username 191M Dec 26 14:56 xaab
-rw-rw-r--  1 username username 191M Dec 26 14:56 xaac
-rw-rw-r--  1 username username 191M Dec 26 14:56 xaad
-rw-rw-r--  1 username username 191M Dec 26 14:56 xaae

举例2:

username@14:58:15:split-test$ split -b 200MB -a 2 testfile.bin
username@14:58:21:split-test$ ll -h
total 1.9G
drwxrwxr-x  2 username username 4.0K Dec 26 14:58 ./
drwxrwxrwt 34 root   root    12K Dec 26 14:58 ../
-rw-rw-r--  1 username username 954M Dec 26 14:46 testfile.bin
-rw-rw-r--  1 username username 191M Dec 26 14:58 xaa
-rw-rw-r--  1 username username 191M Dec 26 14:58 xab
-rw-rw-r--  1 username username 191M Dec 26 14:58 xac
-rw-rw-r--  1 username username 191M Dec 26 14:58 xad
-rw-rw-r--  1 username username 191M Dec 26 14:58 xae

举例3:

username@14:59:43:split-test$ split -b 200MB --suffix-length=3 testfile.bin
username@14:59:49:split-test$ ll -h
total 1.9G
drwxrwxr-x  2 username username 4.0K Dec 26 14:59 ./
drwxrwxrwt 34 root   root    12K Dec 26 14:59 ../
-rw-rw-r--  1 username username 954M Dec 26 14:46 testfile.bin
-rw-rw-r--  1 username username 191M Dec 26 14:59 xaaa
-rw-rw-r--  1 username username 191M Dec 26 14:59 xaab
-rw-rw-r--  1 username username 191M Dec 26 14:59 xaac
-rw-rw-r--  1 username username 191M Dec 26 14:59 xaad
-rw-rw-r--  1 username username 191M Dec 26 14:59 xaae

以上皆以默认的“x”为前缀,紧跟着两到三个字母为后缀。

3. 追加额外的后缀到文件名——–additional-suffix

用法: --additional-suffix=SUFFIX

举例:

username@15:04:42:split-test$ split -b 100MB -a 2 --additional-suffix=SS testfile.bin
username@15:05:18:split-test$ ll -h
total 1.9G
drwxrwxr-x  2 username username 4.0K Dec 26 15:05 ./
drwxrwxrwt 34 root   root    12K Dec 26 15:05 ../
-rw-rw-r--  1 username username 954M Dec 26 14:46 testfile.bin
-rw-rw-r--  1 username username  96M Dec 26 15:05 xaaSS
-rw-rw-r--  1 username username  96M Dec 26 15:05 xabSS
-rw-rw-r--  1 username username  96M Dec 26 15:05 xacSS
-rw-rw-r--  1 username username  96M Dec 26 15:05 xadSS
-rw-rw-r--  1 username username  96M Dec 26 15:05 xaeSS
-rw-rw-r--  1 username username  96M Dec 26 15:05 xafSS
-rw-rw-r--  1 username username  96M Dec 26 15:05 xagSS
-rw-rw-r--  1 username username  96M Dec 26 15:05 xahSS
-rw-rw-r--  1 username username  96M Dec 26 15:05 xaiSS
-rw-rw-r--  1 username username  96M Dec 26 15:05 xajSS

以上举例向后缀的末尾追加了两字母“SS”。

3. 向每个输出的文件放置指定字节的数据 -b

用法:-b SIZE 或者 --bytes=SIZE,“SIZE”指定有单位或者无单位的字节数。

实际用法在本文的《split 命令的基本用法》中已经演示,这里就不再赘述。

4. 每行一次最多切割 SIZE 字节 -C

原文件每行最多切割 SIZE 字节到每个切割生成的文件中,原文件每行剩下的字节输出到下一个输出文件中,下一行将打开新的文件输出。

用法: -C SIZE 或者 --line-bytes=SIZE

用例:

cat > test.txt <<EOF
Sit itaque eum tenetur neque aliquid, harum Voluptates aspernatur voluptatibus exercitationem illum recusandae voluptas eaque! Vel enim earum rerum quasi sequi. Et porro nulla consectetur quisquam aut Harum ipsum ipsam.
Sit corporis fugit laudantium totam a! Voluptatibus voluptatem distinctio iure eius rem. Nesciunt mollitia saepe iusto dolor id. Eum nisi quos tempora iste laborum Cumque veniam voluptas recusandae ab facilis
Consectetur delectus quaerat dolor maiores impedit harum non. Repudiandae odio tempora tempore voluptate ducimus? Saepe sit doloremque natus cumque nisi Commodi vero et architecto amet quaerat Eius quod dignissimos a!
Amet animi dolore quos cumque animi. Incidunt dolores quis ad
Sit fuga tempore temporibus ipsa
Ipsum veniam aliquid saepe omnis minima quos Ducimus nobis dolore quo esse tempore aperiam Eum iusto fuga minima adipisci temporibus temporibus? Ipsam voluptates itaque possimus natus quidem Optio beatae hic.
Lorem totam beatae debitis iusto suscipit animi, sint
Lorem mollitia modi cum delectus dicta Perspiciatis fuga?
Amet consequatur aspernatur nemo hic ipsam? Ex veniam vero
Amet a quidem voluptatum ea numquam Laudantium in tempore deleniti praesentium at in molestias? Voluptatum sint autem dolores accusamus quas. Quod libero optio rerum quod labore! Dignissimos at odio ullam voluptates nulla? Necessitatibus quod architecto nisi sunt dolore Qui in
EOF

举例:

username@15:57:43:split-test$ split -C 100 < test.txt
username@15:57:45:split-test$ ll -h
total 954M
drwxrwxr-x  2 username username 4.0K Dec 26 15:57 ./
drwxrwxrwt 34 root   root    12K Dec 26 15:57 ../
-rw-rw-r--  1 username username 954M Dec 26 14:46 testfile.bin
-rw-rw-r--  1 username username 1.4K Dec 26 15:51 test.txt
-rw-rw-r--  1 username username  100 Dec 26 15:57 xaa
-rw-rw-r--  1 username username  100 Dec 26 15:57 xab
-rw-rw-r--  1 username username   20 Dec 26 15:57 xac
...
-rw-rw-r--  1 username username  100 Dec 26 15:57 xap
-rw-rw-r--  1 username username  100 Dec 26 15:57 xaq
-rw-rw-r--  1 username username   78 Dec 26 15:57 xar

split --line-bytes=100 < test.txt 也有同样的效果。

5. 使用数字为后缀,而非字母 -d

用法:-d

举例:

username@16:05:10:split-test$ split -b 100MB -d < testfile.bin
username@16:05:32:split-test$ ll -h
total 1.9G
drwxrwxr-x  2 username username 4.0K Dec 26 16:05 ./
drwxrwxrwt 34 root   root    12K Dec 26 16:05 ../
-rw-rw-r--  1 username username 954M Dec 26 14:46 testfile.bin
-rw-rw-r--  1 username username 1.4K Dec 26 15:51 test.txt
-rw-rw-r--  1 username username  96M Dec 26 16:05 x00
-rw-rw-r--  1 username username  96M Dec 26 16:05 x01
-rw-rw-r--  1 username username  96M Dec 26 16:05 x02
-rw-rw-r--  1 username username  96M Dec 26 16:05 x03
-rw-rw-r--  1 username username  96M Dec 26 16:05 x04
-rw-rw-r--  1 username username  96M Dec 26 16:05 x05
-rw-rw-r--  1 username username  96M Dec 26 16:05 x06
-rw-rw-r--  1 username username  96M Dec 26 16:05 x07
-rw-rw-r--  1 username username  96M Dec 26 16:05 x08

6. 指定以数字为后缀的开始数字 –numeric-suffixes

用法: --numeric-suffixes[=FROM],其中的“FROM”指定开始数字,若是不指定“FROM”,那么就与本文上面的 -d 意义一样。

举例:

username@16:11:32:split-test$ split -C 100 --numeric-suffixes=5 < test.txt
username@16:11:34:split-test$ ll -h
total 954M
drwxrwxr-x  2 username username 4.0K Dec 26 16:11 ./
drwxrwxrwt 34 root   root    12K Dec 26 16:11 ../
-rw-rw-r--  1 username username 954M Dec 26 14:46 testfile.bin
-rw-rw-r--  1 username username 1.4K Dec 26 15:51 test.txt
-rw-rw-r--  1 username username  100 Dec 26 16:11 x05
-rw-rw-r--  1 username username  100 Dec 26 16:11 x06
-rw-rw-r--  1 username username   20 Dec 26 16:11 x07
-rw-rw-r--  1 username username  100 Dec 26 16:11 x08
-rw-rw-r--  1 username username  100 Dec 26 16:11 x09
-rw-rw-r--  1 username username    9 Dec 26 16:11 x10
-rw-rw-r--  1 username username  100 Dec 26 16:11 x11
..
-rw-rw-r--  1 username username  100 Dec 26 16:11 x20
-rw-rw-r--  1 username username  100 Dec 26 16:11 x21
-rw-rw-r--  1 username username   78 Dec 26 16:11 x22

7. 以一个十六进制数值为后缀 -x

用法: -x

举例:

username@16:19:26:split-test$ split -C 100 -x test.txt test.txt-split-
username@16:19:54:split-test$ ll -h
total 954M
drwxrwxr-x  2 username username 4.0K Dec 26 16:19 ./
drwxrwxrwt 33 root   root    12K Dec 26 16:19 ../
-rw-rw-r--  1 username username 954M Dec 26 14:46 testfile.bin
-rw-rw-r--  1 username username 1.4K Dec 26 15:51 test.txt
-rw-rw-r--  1 username username  100 Dec 26 16:19 test.txt-split-00
-rw-rw-r--  1 username username  100 Dec 26 16:19 test.txt-split-01
-rw-rw-r--  1 username username   20 Dec 26 16:19 test.txt-split-02
-rw-rw-r--  1 username username  100 Dec 26 16:19 test.txt-split-03
...
-rw-rw-r--  1 username username   33 Dec 26 16:19 test.txt-split-09
-rw-rw-r--  1 username username  100 Dec 26 16:19 test.txt-split-0a
-rw-rw-r--  1 username username  100 Dec 26 16:19 test.txt-split-0b
-rw-rw-r--  1 username username   63 Dec 26 16:19 test.txt-split-0c
...
-rw-rw-r--  1 username username  100 Dec 26 16:19 test.txt-split-0f
-rw-rw-r--  1 username username  100 Dec 26 16:19 test.txt-split-10
-rw-rw-r--  1 username username   78 Dec 26 16:19 test.txt-split-11

8. 指定开始数字为后缀 –hex-suffixes

指定开始数字仍然以十六进制的方式命名后缀。

用法: --hex-suffixes[=FROM],其中“FROM”可以指定数字,这里实际应用中也是输入的是十进制数字,不过在生成输出文件时会智能地转换为十六进制。

举例:

username@16:40:15:split-test$ split -C 100 --hex-suffixes=19 test.txt test.txt-split-
username@16:40:22:split-test$ ll
total 976660
drwxrwxr-x  2 username username       4096 Dec 26 16:40 ./
drwxrwxrwt 33 root   root        12288 Dec 26 16:40 ../
-rw-rw-r--  1 username username 1000000000 Dec 26 16:25 testfile.bin
-rw-rw-r--  1 username username       1402 Dec 26 16:25 test.txt
-rw-rw-r--  1 username username        100 Dec 26 16:40 test.txt-split-19
-rw-rw-r--  1 username username        100 Dec 26 16:40 test.txt-split-1a
-rw-rw-r--  1 username username         22 Dec 26 16:40 test.txt-split-1b
-rw-rw-r--  1 username username        100 Dec 26 16:40 test.txt-split-1c
-rw-rw-r--  1 username username        100 Dec 26 16:40 test.txt-split-1d
-rw-rw-r--  1 username username          9 Dec 26 16:40 test.txt-split-1e
-rw-rw-r--  1 username username        100 Dec 26 16:40 test.txt-split-1f
-rw-rw-r--  1 username username        100 Dec 26 16:40 test.txt-split-20
-rw-rw-r--  1 username username         80 Dec 26 16:40 test.txt-split-21
-rw-rw-r--  1 username username         33 Dec 26 16:40 test.txt-split-22
-rw-rw-r--  1 username username        100 Dec 26 16:40 test.txt-split-23
-rw-rw-r--  1 username username        100 Dec 26 16:40 test.txt-split-24
-rw-rw-r--  1 username username         63 Dec 26 16:40 test.txt-split-25
-rw-rw-r--  1 username username         58 Dec 26 16:40 test.txt-split-26
-rw-rw-r--  1 username username         59 Dec 26 16:40 test.txt-split-27
-rw-rw-r--  1 username username        100 Dec 26 16:40 test.txt-split-28
-rw-rw-r--  1 username username        100 Dec 26 16:40 test.txt-split-29
-rw-rw-r--  1 username username         78 Dec 26 16:40 test.txt-split-2a

9. 一次分割的行数 -l

每次从原文件分割 NUMBER 行输出到输出文件中,每个输出文件中的行数不超过 NUMBER。

也可与 -t--separator) 选项一起用,此时 -l 表示列数,举例请移步关于 -t 选项的解释

用法: -l NUMBER 或者 --lines=NUMBER

不能与 -C-b 等选项混用。

举例:

username@17:03:49:split-test$ split -l 3 < test.txt
username@17:03:53:split-test$ ll -h
total 954M
drwxrwxr-x  2 username username 4.0K Dec 26 17:03 ./
drwxrwxrwt 33 root   root    12K Dec 26 17:03 ../
-rw-rw-r--  1 username username 954M Dec 26 16:25 testfile.bin
-rw-rw-r--  1 username username 1.4K Dec 26 17:03 test.txt
-rw-rw-r--  1 username username  647 Dec 26 17:03 xaa
-rw-rw-r--  1 username username  304 Dec 26 17:03 xab
-rw-rw-r--  1 username username  171 Dec 26 17:03 xac
-rw-rw-r--  1 username username  278 Dec 26 17:03 xad

username@17:03:49:split-test$ split --lines=3 < test.txt 也有同样效果。

10. 定义列分割符 -t

使用自定义列分割符分割原文件的行输出到每个输出文件中。

用法: -t SEP--separator=SEP

要与 --lines-l 一起用。

举例:

username@17:20:29:split-test$ split -t " " --lines=5 < test.txt
username@17:20:30:split-test$ ll -h
total 954M
drwxrwxr-x  2 username username 4.0K Dec 26 17:20 ./
drwxrwxrwt 33 root   root    12K Dec 26 17:20 ../
-rw-rw-r--  1 username username 954M Dec 26 16:25 testfile.bin
-rw-rw-r--  1 username username 1.4K Dec 26 17:03 test.txt
-rw-rw-r--  1 username username   29 Dec 26 17:20 xaa
-rw-rw-r--  1 username username   50 Dec 26 17:20 xab
-rw-rw-r--  1 username username   48 Dec 26 17:20 xac
-rw-rw-r--  1 username username   27 Dec 26 17:20 xad
...
-rw-rw-r--  1 username username   38 Dec 26 17:20 xax
-rw-rw-r--  1 username username   45 Dec 26 17:20 xay
-rw-rw-r--  1 username username   37 Dec 26 17:20 xaz
-rw-rw-r--  1 username username   36 Dec 26 17:20 xba
-rw-rw-r--  1 username username   36 Dec 26 17:20 xbb
-rw-rw-r--  1 username username   51 Dec 26 17:20 xbc
...
-rw-rw-r--  1 username username   44 Dec 26 17:20 xbk
-rw-rw-r--  1 username username   32 Dec 26 17:20 xbl
-rw-rw-r--  1 username username    3 Dec 26 17:20 xbm

上例中,定义了列分割符 -t " " 为一个空格,然后 --lines=5 指定每次将五个单词放进到分割文件中。其中换行符及下一段落的第一个单词也会计入到上一段最后一个单词中。

11. 立即从输入复制到输出 -u

用法: -u 或者 --unbuffered

该选项指定立即将分割出来的块输出到文件中,此举会使操作变得缓慢。

12. 打印诊断信息 –verbose

在打开每个输出文件之前输出诊断信息。

用法: --verbose

举例:

username@17:47:03:split-test$ split -C 100 -d --verbose < test.txt
creating file 'x00'
creating file 'x01'
creating file 'x02'
creating file 'x03'
...

总结

本文根据 Linux 下分割文件工具 split 的 HELP 文档总结出来的经验之谈,文中的大部分知识点有举例说明。作为曾经只会使用 split 的 -b 选项的小白,编写这篇文章时花费了一下午的时间来推敲各个知识点,本着实用主义的心态来为读者提供一个易理解的方式了解 split 命令的机会。

在文章的开头已经说明如何合并文件,就不单独列出一个章节单独说明了。

本来本文就是为让读者了解一些 split 命令的选项参数所写的,合并文件实在太简单。

本文还有没有涉及到的领域,比如: -n,也就是 --number 选项,还有就是 --filter 选项和-e 选项,因为这些选项太难理解,作者也在这短短的时间没法参透,暂且留作以后再说吧。

倘若 split 退出状态为零表示成功,非零值表示失败。



程序知路

鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,欢迎互相探讨,一起学习,共同进步。

本文章可以转载,但是需要说明来源出处!

本文使用的部分图片来源于网上,若是侵权,请与本文作者联系删除: admin@icxzl.com