「ものづくり:make」を楽しみながら学ぶ人へ向けた独習サポートサイト。

and more...

Lab.以外の情報を紹介しています。

乱数ジェネレーターで乱数列を生成

Linuxでランダムな名前のファイルを大量に作成する

2024-12-082024-12-08

調査や動作確認のため、ランダムな名前のファイルが大量に必要になることがあります。そんなときに便利なワンライナーを紹介します。

Linuxでランダムな名前のファイルを大量に作成する

調査や動作確認のため、ランダムな名前のファイルが大量に必要になることがあります。そんなときに便利なワンライナーです。ファイル名に使用する文字・桁数・ファイル数を指定して、空ファイルを作成します。作成先はカレントディレクトリーです。

次のワンライナーは、数字(0~9)・英小文字(a~z)・英大文字(A~Z)を使って、ファイル名に36桁のランダムな文字列を含むファイルを1,000件作成します。

作成されたファイルの結果(一部)です。

このワンライナーでは、ファイルの作成時にファイルの存在チェックは行わないため、同一名称の場合、上書きされます。正確な件数が必要な場合は「ls -1U | wc -l」などで確認してください。

解説

cat /dev/urandom

「/dev/urandom(unblocked random)」は、乱数ジェネレーターとして動作する疑似デバイスファイルです。キーボードやCPUなどのハードウェア(デバイスドライバー)から得た環境ノイズを蓄積するエントロピープールを利用して擬似的な乱数列(バイナリーデータ)を生成します。「cat」コマンドで乱数列を標準出力へ書き出します。

tr -dc '0-9a-zA-Z'

「tr」コマンドは、標準入力の文字を変換または削除して、標準出力へ書き出します。「-d」フラグは、指定された文字を削除します。「-c」フラグは、指定された文字以外を対象とします。「-dc」とすることで、指定した文字以外が削除されます。「tr -dc '0-9a-zA-Z'」は、数字(0~9)・英小文字(a~z)・英大文字(A~Z)以外が削除されるため、前段の乱数列のうち、数字・英小文字・英大文字のみを標準出力へ書き出します。

fold -w 36

「fold」コマンドは、テキストファイル(指定がない場合は標準入力)の内容を、指定した値を超えないよう最大幅で改行文字を挿入して、標準出力へ書き出します。「-w」フラグで最大幅を指定します。「fold -w 36」は、36文字ごとに改行文字を挿入して、標準出力へ書き出します。

head -n 1000

「head」コマンドは、ファイル(指定がない場合は標準入力)の内容を、先頭から指定した行数(またはバイト数)だけ標準出力へ書き出します。「-n」フラグで行数を指定します。「head -n 1000」は、1,000行を標準出力へ書き出します。

xargs -i touch prefix.{}.suffix

「xargs」コマンドは、パラメーターリストを生成して、指定のコマンドを実行します。「-i」フラグは、標準入力の各行をコマンドのパラメータとして挿入します。「-i」フラグのパラメーターを省略した場合、挿入位置は「{}」となります。「xargs -i touch prefix.{}.suffix」は、標準入力の各行(36桁のランダムな文字列)を「touch」コマンドのパラメータとして実行します。「touch」コマンドによって、カレントディレクトリーに「prefix.(36桁のランダムな文字列).suffix」という空ファイルが作成されます。

おすすめ

この記事を読んだ人は、こんな記事にも興味があります。
スポンサーリンク
TOPへ移動
目次へ移動