GNU/Linux >> Linux の 問題 >  >> Linux

LinuxでのSplitコマンドの9つの便利な例

分割コマンドについて学習しやすくするために、17170行と1.4MBのサイズを含む比較的大きなテキストファイルを使用しています。このファイルのコピーはGitHubリンクからダウンロードできます。

これらの例では、ファイルサイズが大きいため、出力を直接表示しないことに注意してください。 llコマンドとwcコマンドを使用して、ファイルの変更を強調表示します。

分割コマンドの例の出力を理解するために、wcコマンドをざっと見てみることをお勧めします。

Linuxでの分割コマンドの例

分割コマンドの構文は次のとおりです。

split [options] filename [prefix]

Linuxでファイルを分割するためにそれを使用する方法を見てみましょう。

1。ファイルを複数のファイルに分割する

デフォルトでは、splitコマンドは1000行ごとに新しいファイルを作成します。プレフィックスが指定されていない場合は、「x」が使用されます。次の文字はファイルを列挙するため、xaaが最初に来て、次にxab、というように続きます。

サンプルログファイルを分割してみましょう:

split someLogFile.log

lsコマンドを使用すると、ディレクトリに複数の新しいファイルが表示されます。

[email protected]:~/Documents$ ls
someLogFile.log  xab  xad  xaf  xah  xaj  xal  xan  xap  xar
xaa              xac  xae  xag  xai  xak  xam  xao  xaq

wcを使用すると、分割後の行数をすばやく確認できます。

[email protected]:~/Documents$ wc -l xaa xaq xar
1000 xaa
1000 xaq
170 xar

以前から、最初のファイルに17,170行が含まれていることを思い出してください。したがって、18個の新しいファイルを作成することで、プログラムが期待どおりに実行されたことがわかります。そのうち17行はそれぞれ1000行で埋められ、最後の1行には残りの170行があります。

何が起こっているかを示すもう1つの方法は、verboseオプションを指定してコマンドを実行することです。冗長に慣れていない場合は、見逃していることになります。システムが実行していることに関するより詳細なフィードバックを提供し、多くのコマンドで使用できます。

split someLogFile.log --verbose

コマンドで何が起こっているかをディスプレイで確認できます:

creating file 'xaa'
creating file 'xab'
creating file 'xac'
creating file 'xad'
creating file 'xae'
creating file 'xaf'
creating file 'xag'
creating file 'xah'
creating file 'xai'
creating file 'xaj'
creating file 'xak'
creating file 'xal'
creating file 'xam'
creating file 'xan'
creating file 'xao'
creating file 'xap'
creating file 'xaq'
creating file 'xar'

2。ファイルを特定の行番号を持つ複数のファイルに分割する

ファイルが1000行のファイルに分割されるのは気に入らないかもしれません。この動作は-lで変更できます オプション。

これが追加されると、新しい各ファイルに必要な行数を指定できるようになります。

split someLogFile.log -l 500

ご想像のとおり、分割されたファイルには、最後のファイルを除いて、それぞれ500行あります。

[email protected]:~/Documents$ wc -l xbh xbi
500 xbh
170 xbi

これで、さらに多くのファイルができましたが、各ファイルの行数は半分になりました。

3。ファイルをn個のファイルに分割する

-n オプションを使用すると、指定した数のピースまたはチャンクに簡単に分割できます。 -nの後に整数値を追加することで、必要な数のファイルを割り当てることができます。

split someLogFile.log -n 15

これで、15個の新しいファイルがあることがわかります。

[email protected]:~/Documents$ ls
someLogFile.log  xaa  xab  xac  xad  xae  xaf  xag  xah  xai  xaj  xak  xal  xam  xan  xao

4。カスタム名プレフィックス付きのファイルを分割

分割を使用したいが、「x」を使用する代わりに、ファイルの元の名前を保持するか、新しい名前を完全に作成する場合はどうなりますか?

記事の冒頭で説明した構文の一部としてプレフィックスを見たことを覚えているかもしれません。ソースファイルの後に独自のカスタムファイル名を書き込むことができます。

split someLogFile.log someSeparatedLogFiles.log_

これは、指定されたプレフィックスで始まる名前の分割ファイルです。

[email protected]:~/Documents$ ls
someLogFile.log               someSeparatedLogFiles.log_aj
someSeparatedLogFiles.log_aa  someSeparatedLogFiles.log_ak
someSeparatedLogFiles.log_ab  someSeparatedLogFiles.log_al
someSeparatedLogFiles.log_ac  someSeparatedLogFiles.log_am
someSeparatedLogFiles.log_ad  someSeparatedLogFiles.log_an
someSeparatedLogFiles.log_ae  someSeparatedLogFiles.log_ao
someSeparatedLogFiles.log_af  someSeparatedLogFiles.log_ap
someSeparatedLogFiles.log_ag  someSeparatedLogFiles.log_aq
someSeparatedLogFiles.log_ah  someSeparatedLogFiles.log_ar
someSeparatedLogFiles.log_ai

5。接尾辞の長さを分割して指定する

Splitは、デフォルトのサフィックス長2 [aa、abなど]を備えています。これはファイル数が増えると自動的に変更されますが、手動で変更したい場合はそれも可能です。たとえば、ファイルにsomeSeparatedLogFiles.log_aaaabのような名前を付けたいとします。

どうすればこれを行うことができますか?オプション-a 接尾辞の長さを指定できます。

split someLogFile.log someSeparatedLogFiles.log_ -a 5

そして、ここに分割ファイルがあります:

[email protected]:~/Documents$ ls
someLogFile.log                  someSeparatedLogFiles.log_aaaae  someSeparatedLogFiles.log_aaaaj  someSeparatedLogFiles.log_aaaao
someSeparatedLogFiles.log_aaaaa  someSeparatedLogFiles.log_aaaaf  someSeparatedLogFiles.log_aaaak  someSeparatedLogFiles.log_aaaap
someSeparatedLogFiles.log_aaaab  someSeparatedLogFiles.log_aaaag  someSeparatedLogFiles.log_aaaal  someSeparatedLogFiles.log_aaaaq
someSeparatedLogFiles.log_aaaac  someSeparatedLogFiles.log_aaaah  someSeparatedLogFiles.log_aaaam  someSeparatedLogFiles.log_aaaar
someSeparatedLogFiles.log_aaaad  someSeparatedLogFiles.log_aaaai  someSeparatedLogFiles.log_aaaan

6。番号順の接尾辞で分割

これまで、さまざまな文字の組み合わせを使用してファイルが分離されているのを見てきました。個人的には、数字を使用してファイルを区別する方がはるかに簡単だと思います。

前の例の接尾辞の長さを維持しますが、オプション-dを使用してアルファベットの構成を数値に変更します 。

split someLogFile.log someSeparatedLogFiles.log_ -a 5 -d

これで、数値で十分な分割ファイルが作成されます。

[email protected]:~/Documents$ ls
someLogFile.log                  someSeparatedLogFiles.log_00004  someSeparatedLogFiles.log_00009  someSeparatedLogFiles.log_00014
someSeparatedLogFiles.log_00000  someSeparatedLogFiles.log_00005  someSeparatedLogFiles.log_00010  someSeparatedLogFiles.log_00015
someSeparatedLogFiles.log_00001  someSeparatedLogFiles.log_00006  someSeparatedLogFiles.log_00011  someSeparatedLogFiles.log_00016
someSeparatedLogFiles.log_00002  someSeparatedLogFiles.log_00007  someSeparatedLogFiles.log_00012  someSeparatedLogFiles.log_00017
someSeparatedLogFiles.log_00003  someSeparatedLogFiles.log_00008  someSeparatedLogFiles.log_00013

7。分割ファイルに16進サフィックスを追加する

接尾辞を作成するためのもう1つのオプションは、順序付けられた文字と数字を交互に使用する組み込みの16進接尾辞で使用することです。

この例では、すでに示したいくつかのことを組み合わせます。自分のプレフィックスを使用してファイルを分割します。読みやすくするためにアンダースコアを選択しました。

-xを使用しました 16進サフィックスを作成するオプション。次に、ファイルを50のチャンクに分割し、接尾辞の長さを6にしました。

split someLogFile.log _ -x -n50 -a6

上記のコマンドの結果は次のとおりです。

[email protected]:~/Documents$ ls
_000000  _000003  _000006  _000009  _00000c  _00000f  _000012  _000015  _000018  _00001b  _00001e  _000021  _000024  _000027  _00002a  _00002d  _000030
_000001  _000004  _000007  _00000a  _00000d  _000010  _000013  _000016  _000019  _00001c  _00001f  _000022  _000025  _000028  _00002b  _00002e  _000031
_000002  _000005  _000008  _00000b  _00000e  _000011  _000014  _000017  _00001a  _00001d  _000020  _000023  _000026  _000029  _00002c  _00002f  someLogFile.log

8。ファイルを特定のサイズの複数のファイルに分割する

ファイルサイズを使用して、ファイルを分割して分割することもできます。サイズが制限されたネットワークを介して、できるだけ効率的に大きなファイルを送信する必要があるかもしれません。要件に合わせて正確なサイズを指定できます。

オプションを追加し続けると、構文が少し複雑になる可能性があります。そこで、-b コマンドは例を示す前に機能します。

特定のサイズのファイルを作成する場合は、-bを使用します オプション。その後、 nと書くことができます K [B]、 n M [B]、 n G[B]ここでn はファイルサイズの値であり、K [1024]は-kibi、Mは-mebi、Gは-gibiなどです。 KB [1000]はキロ、MB –メガなどです。

多くのことが起こっているように見えるかもしれませんが、それを分解するとそれほど複雑ではありません。ソースファイル、宛先ファイル名プレフィックス、数値サフィックス、およびファイルサイズによる128kBの区切りを指定しました。

split someLogFile.log someSeparatedLogFiles.log_ -d -b 128KB

分割されたファイルは次のとおりです。

[email protected]:~/Documents$ ls
someLogFile.log               someSeparatedLogFiles.log_02  someSeparatedLogFiles.log_05  someSeparatedLogFiles.log_08
someSeparatedLogFiles.log_00  someSeparatedLogFiles.log_03  someSeparatedLogFiles.log_06  someSeparatedLogFiles.log_09
someSeparatedLogFiles.log_01  someSeparatedLogFiles.log_04  someSeparatedLogFiles.log_07  someSeparatedLogFiles.log_10

「wc」コマンドで結果を確認できます。

[email protected]:~/Documents$ wc someSeparatedLogFiles.log_0*
1605    4959  128000 someSeparatedLogFiles.log_00
1605    4969  128000 someSeparatedLogFiles.log_01
1605    4953  128000 someSeparatedLogFiles.log_02
1605    4976  128000 someSeparatedLogFiles.log_03
1605    4955  128000 someSeparatedLogFiles.log_04
1605    4975  128000 someSeparatedLogFiles.log_05
1605    4966  128000 someSeparatedLogFiles.log_06
1605    4964  128000 someSeparatedLogFiles.log_07
1605    4968  128000 someSeparatedLogFiles.log_08
1605    4959  128000 someSeparatedLogFiles.log_09
16050   49644 1280000 total

9。ファイルを「最大」サイズの複数のファイルに分割しますn

ファイルをほぼ同じサイズに分割したいが、行構造を保持したい場合は、これが最適な選択かもしれません。 -Cを使用 、最大サイズを指定できます。次に、プログラムは完全な行に基づいてファイルを自動的に分割します。

split someLogFile.log someNewLogFiles.log_ -d -C 1MB

出力では、最初の分割ファイルのサイズがほぼ1MBであるのに対し、ファイルの残りの部分は2番目のファイルにあることがわかります。

[email protected]:~/Documents$ ll
total 2772
drwxr-xr-x  2 chris chris   81920 Jul 24 22:01 ./
drwxr-xr-x 19 chris chris    4096 Jul 23 22:23 ../
-rw-r--r--  1 chris chris 1369273 Jul 20 17:52 someLogFile.log
-rw-r--r--  1 chris chris  999997 Jul 24 22:01 someNewLogFiles.log_00
-rw-r--r--  1 chris chris  369276 Jul 24 22:01 someNewLogFiles.log_01

ボーナスのヒント:分割ファイルの再結合

これは分割コマンドではありませんが、新しいユーザーには役立つ可能性があります。

[email protected]:~/Documents$ ls
xaa  xab  xac  xad  xae  xaf  xag  xah  xai  xaj  xak  xal  xam  xan  xao  xap  xaq  xar

別のコマンドを使用して、これらのファイルを再結合し、完全なドキュメントのレプリカを作成できます。 catコマンドは、連結の略で、「アイテムを結合する」という意味の単なる空想の言葉です。すべてのファイルは文字「x」で始まるため、アスタリスクはその文字で始まるすべてのファイルにコマンドを適用します。

[email protected]:~/Documents$ cat x* > recoveredLogFile.log
[email protected]:~/Documents$ ls
recoveredLogFile.log  xab  xad  xaf  xah  xaj  xal  xan  xap  xar
xaa                   xac  xae  xag  xai  xak  xam  xao  xaq

ご覧のとおり、再作成されたファイルは元のファイルと同じサイズです。

wc -l recreatedLogFile.log
17170 recreatedLogFile.log

フォーマット(行数を含む)は、作成されたファイルに保持されます。

Linuxを初めて使用する場合は、このチュートリアルがsplitコマンドの理解に役立つことを願っています。経験豊富な方は、下のコメントでスプリットのお気に入りの使い方を教えてください!

初心者または経験豊富な方は、Linuxコマンドラインでファイルを分割するための少し優れた方法であるcsplitコマンドも確認することをお勧めします。


Linux
  1. Linuxでの12の便利なWgetコマンドの例

  2. Linuxでのlsコマンド:17の便利な例の説明

  3. Linuxでのmvコマンド:7つの重要な例

  1. Linuxでのファイルコマンドの基本的な例

  2. Linuxでidコマンドを使用する方法:5つの便利な例

  3. 14 Linux での便利な「cat」コマンドの例

  1. Linuxでのddコマンドの5つの実用例

  2. Linux での ln コマンドの例

  3. Linux での file コマンドの例