ウェブサイト検索

Linuxでテキストファイルを分割するためのsplitコマンドの使い方


Linuxのsplitコマンドを使用して、大きなファイルを複数の小さなファイルに分割する方法を学びましょう。

Linuxは、分割コマンドを含む、テキスト操作と処理のための幅広いコマンドを提供しています。splitを使用すると、大きなファイルを小さなファイルに簡単に分割したり、特定の基準に基づいてファイルの特定の部分を抽出したりできます。

Linuxでファイルを分割するためにsplitコマンドの使い方を探ってみましょう。大きなファイルの特定の部分を抽出する必要がある場合や、ファイルを小さなチャンクに分割する場合でも、splitコマンドを使用すれば簡単に目的を達成できます。

スプリットコマンドとは何ですか?

splitコマンドは、Torbjorn Granlund氏とRichard M. Stallman氏によって作成された人気のあるLinuxコマンドラインツールです。その名の通り、splitコマンドはファイルを小さなサブファイルに分割するために使用されます。

このコマンドは、大きなファイルを管理したり、帯域幅が限られたネットワークでファイルを転送する際に便利です。大きなファイルを小さな部分に分割することで、特定の時点で転送または保存する必要があるデータの量を減らすことができます。また、分割コマンドを逆にして、複数のファイルを1つに結合することもできます。

分割コマンドの構文

splitコマンドの基本構文は次の通りです:

split [OPTION]... [FILE] [PREFIX]
  • [オプション]: splitコマンドには、ファイルをどのように分割するかを決定するためのさまざまなオプションや、追加したい可能性のある他の特定の機能があります。
  • [ファイル]: これは分割したいファイルへのパスです。
  • [プレフィックス]: これはサブファイルのプレフィックスを指します。

splitコマンドの使い方

split コマンドを使用して、大きなファイルをサイズや長さによって小さなファイルに分割することができます。特定の数の小さなファイルを選択することもできます。

デモのために、largefile.txtという名前のテキストファイルを使用します。このチュートリアルでは、複数の行があり、かなり大きなサイズのテキストファイルを選んでください。それがない場合は、Linuxのテキストエディタやcatコマンドを使用して、大きなテキストを貼り付けて保存できます。

行数に基づいて大きなファイルを分割する

特定の行数に基づいて大きなファイルを小さいファイルに分割するために、splitコマンドを使用できます。以下はその構文です:

split -l [number of lines] [input file] [output file prefix]

例えば、210行のファイルを50行ずつのファイルに分割したい場合、5つの小さいファイルが得られます。最初の4つのファイルはそれぞれ50行で、5つ目のファイルには10行だけが含まれています。

「largefile.txt」というファイルを100行ずつの小さなファイルに分割するには、次のコマンドを実行します:

split -l 100 largefile.txt smallfile

lsコマンドを使ってディレクトリの内容をリストすると、分割ファイルが表示されます。

サイズに基づいて大きなファイルを分割する

大きなファイルを特定のファイルサイズに基づいて小さなファイルに分割するために、splitコマンドを使用することもできます。基本的な構文は次のとおりです。

split -b [size in bytes] [input file] [output file prefix]

このコマンドを実行して、largefile.txtを300バイトごとの小さなファイルに分割します:

split -b 300 largefile.txt smallfile

こちらが結果です:

大きなファイルを特定の数のファイルに分割する

ファイルをその中のファイル数やバイト数に関係なく、固定数に分割することもできます。これを-nオプションを使用して行います。以下が構文です:

split -n [number of files] [input file] [output file prefix]

大きなファイルを五つの部分に分割するには、次のコマンドを実行してください:

split -n 5 largefile.txt smallfile

結果はこのように見えるべきです:

分割ファイルのサフィックスの長さを変更する

お気づきかもしれませんが、出力ファイル名に付けられる接尾辞のデフォルトの長さは2です。例えば、smallfileaa、smallfileab、smallfileacなどです。

接尾辞の長さを変更するには、-aオプションを使用します。接尾辞の長さを変更するための構文は次のとおりです:

split -a [length of suffix] [input file] [output file prefix]

このサフィックス長オプションを他の分割コマンドと一緒に使用できます。largefile.txtファイルを10部分に分割し、サフィックスの長さを4にするには、以下のコマンドを実行してください:

split -a 4 -n 10 largefile.txt smallfile

ディレクトリの内容をリストすると、出力は次のようになります:

catを使って複数のファイルを結合する

良い知らせは、分割されたファイルを常に元のファイルに戻すことができるということです。分割されたファイルを元のファイルに戻すには、catコマンドを使用します。これを行うための構文は次のとおりです:

cat [split files] > [output file]

catコマンドを使用して分割ファイルを結合する際は、分割ファイルの正しい順序を指定することが重要です。

catコマンドは、指定された順序でファイルを単純に連結するだけですので、ファイルが正しい順序にない場合、マージされたファイルは破損します。

多数の分割ファイル、例えば100個の分割ファイルがある場合、それぞれのファイルを一つずつ、正しい順序で入力するのは煩わしいでしょう。

ここで接頭辞が登場します。アスタリスク(*)を追加するだけで、その接頭辞で始まるすべてのファイルをマージすることができます。

cat prefix* > [output file]

こちらが、分割されたファイルsmallfileaa、smallfileab、smallfileac、およびsmallfileadをbigfile.txtという1つのファイルに統合する例のコマンドです。

cat smallfile* > bigfile.txt

このコマンドは、パターンsmallfile*に一致するすべての分割ファイルの内容を連結し、その出力をbigfile.txtという新しいファイルにリダイレクトします。また、分割ファイルを名前に基づいて自然な順序でリストしますが、それがマージのための正しい順序であるはずです。

Linuxツールを使って効率を上げる

splitコマンドは、Linuxが大きなファイルを効率的に管理するために提供する多くのツールの一つであり、それをより小さく、扱いやすい部分に分割することによって実現します。

Linuxのテキスト処理コマンドを習得することで、時間とリソースを節約し、より効率的になることができます。

関連記事: