Linuxでランダムな名前のファイルを大量に作成する
調査や動作確認のため、ランダムな名前のファイルが大量に必要になることがあります。そんなときに便利なワンライナーを紹介します。
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」という空ファイルが作成されます。
おすすめ
1日1問、半年以内に習得 シェル・ワンライナー 160本ノック
- 出版社
- 技術評論社
- 著者
- 上田 隆一・山田 泰宏・田代 勝也・中村 壮一・今泉 光之・上杉 尚史
- 発売日
- 2021/9/2
ゼロからわかる Linuxコマンド200本ノック 基礎知識と頻出コマンドを無理なく記憶に焼きつけよう!
- 出版社
- 技術評論社
- 著者
- ひらまつ しょうたろう
- 発売日
- 2023/3/8