たまに必要となるのでメモ。
実施環境:
Linux
[testuser@testhost ~]$ uname -a
Linux testhost 4.18.0-147.8.1.el8_1.x86_64 #1 SMP Thu Apr 9 13:49:54 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[testuser@testhost ~]$ echo $SHELL
/bin/bash
サイズの大きいファイルを、Linux上で分割したい時があります。
そのような時に使用するのが、splitコマンドです。
以下のように記載して使用します。
Linux
split -b 分割サイズ -d 分割前ファイル 分割後ファイル
分割後のファイル名は、分割後ファイル00,分割後ファイル01,...となります。
以下、実行例です。
Linux
[testuser@testhost ~]$ ls -lh test.log*
-rw-r--r-- 1 testuser testgrp 4.8M Jul 3 20:17 test.log
[testuser@testhost ~]$ split -b 1M -d test.log test.log.
[testuser@testhost ~]$ ls -lh test.log*
-rw-r--r-- 1 testuser testgrp 4.8M Jul 3 20:17 test.log
-rw-r--r-- 1 testuser testgrp 1.0M Jul 3 20:20 test.log.00
-rw-r--r-- 1 testuser testgrp 1.0M Jul 3 20:20 test.log.01
-rw-r--r-- 1 testuser testgrp 1.0M Jul 3 20:20 test.log.02
-rw-r--r-- 1 testuser testgrp 1.0M Jul 3 20:20 test.log.03
-rw-r--r-- 1 testuser testgrp 787K Jul 3 20:20 test.log.04
上記の例では、test.logを1MB単位のtest.log.00~test.log.04に分割しています。
分割したファイルを結合するにはcatコマンドを使用します。
Linux
[testuser@testhost ~]$ ls -lh test.log*
-rw-r--r-- 1 testuser testgrp 4.8M Jul 3 20:17 test.log
-rw-r--r-- 1 testuser testgrp 1.0M Jul 3 20:20 test.log.00
-rw-r--r-- 1 testuser testgrp 1.0M Jul 3 20:20 test.log.01
-rw-r--r-- 1 testuser testgrp 1.0M Jul 3 20:20 test.log.02
-rw-r--r-- 1 testuser testgrp 1.0M Jul 3 20:20 test.log.03
-rw-r--r-- 1 testuser testgrp 787K Jul 3 20:20 test.log.04
[testuser@testhost ~]$ cat test.log.* > test.log.merge
[testuser@testhost ~]$ ls -lh test.log*
-rw-r--r-- 1 testuser testgrp 4.8M Jul 3 20:17 test.log
-rw-r--r-- 1 testuser testgrp 1.0M Jul 3 20:20 test.log.00
-rw-r--r-- 1 testuser testgrp 1.0M Jul 3 20:20 test.log.01
-rw-r--r-- 1 testuser testgrp 1.0M Jul 3 20:20 test.log.02
-rw-r--r-- 1 testuser testgrp 1.0M Jul 3 20:20 test.log.03
-rw-r--r-- 1 testuser testgrp 787K Jul 3 20:20 test.log.04
-rw-r--r-- 1 testuser testgrp 4.8M Jul 3 20:22 test.log.merge
[testuser@testhost ~]$ diff test.log test.log.merge
[testuser@testhost ~]$