GNUコアユーティリティがそれぞれ1 GBファイルに分割できるファイルの最大サイズは何ですか?

GNUコアユーティリティがそれぞれ1 GBファイルに分割できるファイルの最大サイズは何ですか?

私の限界が何であるかを知りたいです。文字システムazがあり、2番目の文字を1ずつ増やします(xay - > xaz - >(見たことはありませんが仮定)xba - > xbb)

答え1

Split(1) はデフォルトでサフィックス長を自動的に拡張します (特定のサフィックス長を指定しない限り)。したがって、発生する可能性のある制限は、ファイルシステムのファイル数、ファイル名の長さ、およびファイルシステムのサイズです。デフォルトでは、分割(1)制限ではなく、すべてのファイルシステム制限です。

警告、分割(1)には26^2の制限がありましたが、v8.16(2012)でサフィックスを自動的に拡張して削除しました。

答え2

これは、実際にはファイルシステムでサポートされているファイルの最大数、またはsplit

8つのアルファベットのサフィックス文字のみが2 64バイトを超える入力ファイルを処理できるため、サフィックスの長さは関連する制限ではありません。

1GB • 26 8
= 2 30バイト • 26 8
> 2 30バイト • 16 8
= 2 30バイト • 2 4•8
= 2 64バイト

引用:split.c、彼らは必要な文字数を調べるためにアルファベット文字数で割ってループを実行します。

答え3

たとえば、100kBのファイルを作成し、それぞれ2バイトを書き込むことで自分で試してみることができます。

mkdir try
cd try

dd if=/dev/urandom iflag=fullblock bs=1024 count=100 >random.dat
split -a4 -b2 random.dat

これにより、51200個の出力ファイルが生成されます。オプションについては参考資料を参照してくださいxaaaaxcxtfman split

関連情報