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

大きなファイルを管理するための 15 の Linux 分割および結合コマンドの例

Linux の分割および結合コマンドは、大きなファイルを操作する場合に非常に役立ちます。この記事では、Linux の分割および結合コマンドの使用方法を説明的な例とともに説明します。

結合および分割コマンド構文:

<ブロック引用>

結合 [オプション]… ファイル 1 ファイル 2
分割 [オプション]… [入力 [プレフィックス]]

Linux 分割コマ​​ンドの例

1.基本的な分割の例

以下は分割コマンドの基本的な例です。

$ split split.zip 

$ ls
split.zip  xab  xad  xaf  xah  xaj  xal  xan  xap  xar  xat  xav  xax  xaz  xbb  xbd  xbf  xbh  xbj  xbl  xbn
xaa        xac  xae  xag  xai  xak  xam  xao  xaq  xas  xau  xaw  xay  xba  xbc  xbe  xbg  xbi  xbk  xbm  xbo

したがって、ファイル split.zip は、ファイル名が x** の小さなファイルに分割されていることがわかります。 ** は、デフォルトで追加される 2 文字のサフィックスです。また、デフォルトでは、各 x** ファイルには 1000 行が含まれます。

$ wc -l *
   40947 split.zip
    1000 xaa
    1000 xab
    1000 xac
    1000 xad
    1000 xae
    1000 xaf
    1000 xag
    1000 xah
    1000 xai
...
...
...

したがって、上記の出力は、デフォルトで各 x** ファイルに 1000 行が含まれていることを確認しています。

2.-a オプションを使用してサフィックスの長さを変更します

上記の例 1 で説明したように、デフォルトの接尾辞の長さは 2 です。ただし、これは -a オプションを使用して変更できます。

次の例でわかるように、分割ファイルで長さ 5 のサフィックスを使用しています。

$ split -a5 split.zip
$ ls
split.zip  xaaaac  xaaaaf  xaaaai  xaaaal  xaaaao  xaaaar  xaaaau  xaaaax  xaaaba  xaaabd  xaaabg  xaaabj  xaaabm
xaaaaa     xaaaad  xaaaag  xaaaaj  xaaaam  xaaaap  xaaaas  xaaaav  xaaaay  xaaabb  xaaabe  xaaabh  xaaabk  xaaabn
xaaaab     xaaaae  xaaaah  xaaaak  xaaaan  xaaaaq  xaaaat  xaaaaw  xaaaaz  xaaabc  xaaabf  xaaabi  xaaabl  xaaabo

注:以前、他のファイル操作ユーティリティ (tac、rev、paste) についても説明しました。

3. -b オプションを使用して分割ファイル サイズをカスタマイズ

各出力分割ファイルのサイズは、-b オプションを使用して制御できます。

この例では、分割ファイルは 200000 バイトのサイズで作成されました。

$ split -b200000 split.zip 

$ ls -lart
total 21084
drwxrwxr-x 3 himanshu himanshu     4096 Sep 26 21:20 ..
-rw-rw-r-- 1 himanshu himanshu 10767315 Sep 26 21:21 split.zip
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xad
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xac
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xab
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xaa
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xah
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xag
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xaf
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xae
-rw-rw-r-- 1 himanshu himanshu   200000 Sep 26 21:35 xar
...
...
...

4. -d オプションを使用して、数値サフィックス付きの分割ファイルを作成

上記の例に見られるように、出力の形式は x** で、** はアルファベットです。 -d オプションを使用してこれを number に変更できます。

ここに例があります。これには、分割されたファイルに数字の接尾辞が付いています。

$ split -d split.zip
$ ls
split.zip  x01  x03  x05  x07  x09  x11  x13  x15  x17  x19  x21  x23  x25  x27  x29  x31  x33  x35  x37  x39
x00        x02  x04  x06  x08  x10  x12  x14  x16  x18  x20  x22  x24  x26  x28  x30  x32  x34  x36  x38  x40

5. -C オプションを使用して分割チャンクの数をカスタマイズ

チャンクの数を制御するには、-C オプションを使用してください。

この例では、50 個の分割ファイルのチャンクが作成されます。

$ split -n50 split.zip
$ ls
split.zip  xac  xaf  xai  xal  xao  xar  xau  xax  xba  xbd  xbg  xbj  xbm  xbp  xbs  xbv
xaa        xad  xag  xaj  xam  xap  xas  xav  xay  xbb  xbe  xbh  xbk  xbn  xbq  xbt  xbw
xab        xae  xah  xak  xan  xaq  xat  xaw  xaz  xbc  xbf  xbi  xbl  xbo  xbr  xbu  xbx

6. -e オプションを使用してサイズがゼロのチャンクを避ける

比較的小さなファイルを多数のチャンクに分割する場合、値が追加されないため、サイズがゼロのチャンクは避けることをお勧めします。これは -e オプションを使用して実行できます。

以下に例を示します:

$ split -n50 testfile

$ ls -lart x*
-rw-rw-r-- 1 himanshu himanshu 0 Sep 26 21:55 xag
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:55 xaf
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:55 xae
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:55 xad
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:55 xac
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:55 xab
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:55 xaa
-rw-rw-r-- 1 himanshu himanshu 0 Sep 26 21:55 xbx
-rw-rw-r-- 1 himanshu himanshu 0 Sep 26 21:55 xbw
-rw-rw-r-- 1 himanshu himanshu 0 Sep 26 21:55 xbv
...
...
...

したがって、上記の出力では、サイズがゼロのチャンクが多数生成されていることがわかります。それでは、-e オプションを使用して結果を見てみましょう:

$ split -n50 -e testfile
$ ls
split.zip  testfile  xaa  xab  xac  xad  xae  xaf

$ ls -lart x*
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:57 xaf
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:57 xae
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:57 xad
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:57 xac
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:57 xab
-rw-rw-r-- 1 himanshu himanshu 1 Sep 26 21:57 xaa

したがって、上記の出力ではサイズがゼロのチャンクが生成されていないことがわかります。

7. -l オプションを使用して行数をカスタマイズ

出力分割ファイルごとの行数は、-l オプションを使用してカスタマイズできます。

以下の例に示すように、分割ファイルは 20000 行で作成されます。

$ split -l20000 split.zip

$ ls
split.zip  testfile  xaa  xab  xac

$ wc -l x*
   20000 xaa
   20000 xab
     947 xac
   40947 total

–verbose オプションを使用して詳細情報を取得

新しい分割ファイルが開かれるたびに診断メッセージを取得するには、以下に示すように –verbose オプションを使用します。

$ split -l20000 --verbose split.zip
creating file `xaa'
creating file `xab'
creating file `xac'

Linux Join コマンドの例

8.基本的な結合の例

結合コマンドは、最初のフィールドを照合することにより、2 つのファイル (入力として提供) の最初のフィールドで機能します。

以下に例を示します:

$ cat testfile1
1 India
2 US
3 Ireland
4 UK
5 Canada

$ cat testfile2
1 NewDelhi
2 Washington
3 Dublin
4 London
5 Toronto

$ join testfile1 testfile2
1 India NewDelhi
2 US Washington
3 Ireland Dublin
4 UK London
5 Canada Toronto

したがって、最初のフィールドに基づいて、国を含むファイルが首都を含む別のファイルと結合されていることがわかります。

9.ソート済みリストの作品に参加

join コマンドに指定された 2 つのファイルのいずれかがソートされていない場合、出力に警告が表示され、その特定のエントリは結合されません。

この例では、入力ファイルがソートされていないため、警告/エラー メッセージが表示されます。

$ cat testfile1
1 India
2 US
3 Ireland
5 Canada
4 UK

$ cat testfile2
1 NewDelhi
2 Washington
3 Dublin
4 London
5 Toronto

$ join testfile1 testfile2
1 India NewDelhi
2 US Washington
3 Ireland Dublin
join: testfile1:5: is not sorted: 4 UK
5 Canada Toronto

10. -i オプションを使用して大文字と小文字を区別しない

フィールドを比較する場合、以下に示すように -i オプションを使用して大文字と小文字の違いを無視できます。

$ cat testfile1
a India
b US
c Ireland
d UK
e Canada

$ cat testfile2
a NewDelhi
B Washington
c Dublin
d London
e Toronto

$ join testfile1 testfile2
a India NewDelhi
c Ireland Dublin
d UK London
e Canada Toronto

$ join -i testfile1 testfile2
a India NewDelhi
b US Washington
c Ireland Dublin
d UK London
e Canada Toronto

11. –check-order オプションを使用して入力がソートされていることを確認します

ここに例があります。 testfile1 は最後までソートされていなかったため、出力でエラーが生成されました。

$ cat testfile1
a India
b US
c Ireland
d UK
f Australia
e Canada

$ cat testfile2
a NewDelhi
b Washington
c Dublin
d London
e Toronto

$ join --check-order testfile1 testfile2
a India NewDelhi
b US Washington
c Ireland Dublin
d UK London
join: testfile1:6: is not sorted: e Canada

12. –nocheck-order オプションを使用してソート度をチェックしない

これは前の例の反対です。この例では、並べ替えのチェックは行われず、エラー メッセージは表示されません。

$ join --nocheck-order testfile1 testfile2
a India NewDelhi
b US Washington
c Ireland Dublin
d UK London

13. -a オプションを使用してペアリングできない行を出力

両方の入力ファイルを 1 対 1 でマップできない場合は、-a[FILENUM] オプションを使用して、比較中にペアにすることができない行を含めることができます。 FILENUM はファイル番号 (1 または 2) です。

次の例では、-a1 を使用すると、testfile2 にペアがない testfile1 の最後の行 (以下で太字でマーク) が生成されることがわかります。

$ cat testfile1
a India
b US
c Ireland
d UK
e Canada
f Australia

$ cat testfile2
a NewDelhi
b Washington
c Dublin
d London
e Toronto

$ join testfile1 testfile2
a India NewDelhi
b US Washington
c Ireland Dublin
d UK London
e Canada Toronto

$ join -a1 testfile1 testfile2
a India NewDelhi
b US Washington
c Ireland Dublin
d UK London
e Canada Toronto
f Australia

14. -v オプションを使用して対になっていない行のみを出力

上記の例では、対になっている行と対になっていない行の両方が出力に生成されました。ただし、対になっていない出力のみが必要な場合は、以下に示すように -v オプションを使用してください。

$ join -v1 testfile1 testfile2
f Australia

15. -1 および -2 オプションを使用して、両方のファイルの異なる列に基づいて結合

デフォルトでは、両方のファイルの最初の列が結合前の比較に使用されます。 -1 および -2 オプションを使用して、この動作を変更できます。

次の例では、testfile1 の最初の列を testfile2 の 2 番目の列と比較して、結合コマンドの出力を生成しています。

$ cat testfile1
a India
b US
c Ireland
d UK
e Canada

$ cat testfile2
NewDelhi a
Washington b
Dublin c
London d
Toronto e

$ join -1 1 -2 2 testfile1 testfile2
a India NewDelhi
b US Washington
c Ireland Dublin
d UK London
e Canada Toronto

Linux
  1. Linuxコマンド-概要と例

  2. Linuxでのrsyncコマンドの実用例

  3. オブジェクト ファイルをコピーおよび変換するための Linux Objcopy コマンドの例

  1. Linux Catコマンド:使用法と例

  2. Linux および Unix でファイルをコピーする方法10 cp コマンドの例

  3. Linux / UNIX でファイルを管理する 10 の Cat コマンドの例

  1. Linuxでコマンドラインからファイルを分割して結合する方法

  2. 10 Linux DU コマンドの例 (ファイルとフォルダーのディスク使用サイズ)

  3. Linux での mkdir および rmdir コマンドの例