LinuxLinux [リナックス / ライナックス]オープンソースのOSカーネルのシェルスクリプトやコマンドライン作業において、「1から100までの連番を出力したい」「001、002 のようにゼロ埋め(桁揃え)した連番でファイルやディレクトリを一括作成したい」といった場面はよくあります。
この記事では、指定した開始値・増分・終了値に従って規則的な数値列(シーケンス)を出力する seq(sequence)コマンドの使い方を解説します。基本的な連番生成から、-w や -f オプションによるゼロ埋め・プレフィックス付与、Bashのブレース展開({1..10})との使い分けまでを具体例とともに紹介します。
この記事を読むことで、seq コマンドの仕様や注意点を正しく理解し、ループ処理やテストデータ生成を簡潔に記述できるようになります。
確認した環境
本記事で解説するコマンドや出力結果は、以下の環境で実機検証を行っています(バージョン確認コマンド: seq --version)。
| OSOS [オーエス]Operating System。基本ソフトウェア | GNU coreutils バージョン |
|---|---|
| DebianDebian [デビアン]コミュニティ主導で開発される安定性の高いLinuxディストリビューション GNU/Linux 11 (bullseye) | GNU coreutils 8.32(seq (GNU coreutils) 8.32) |
| UbuntuUbuntu [ウブントゥ]人気のLinuxディストリビューション 24.04 LTS | GNU coreutils 9.4(seq (GNU coreutils) 9.4) |
| AlmaLinux 9.4 | GNU coreutils 8.32(seq (GNU coreutils) 8.32) |
Linuxのseqコマンドとは?連番を生成する基本機能
seq コマンドは、指定した範囲の数値を一定の増分(ステップ)で順番に生成し、標準出力へ書き出すコマンドです。コマンド名の seq は「sequence(連続・数列)」に由来します。
基本構文と引数の数による動作の違い
seq コマンドは、渡す引数の数(1個〜3個)によって解釈が変わります。
# 引数が1つの場合:1 から <終了値> まで 1 ずつ増やすseq [オプション] <終了値>
# 引数が2つの場合:<開始値> から <終了値> まで 1 ずつ増やすseq [オプション] <開始値> <終了値>
# 引数が3つの場合:<開始値> から <終了値> まで <増分> ずつ変化させるseq [オプション] <開始値> <増分> <終了値><開始値> または <増分> を省略した場合は、どちらもデフォルトで 1 が適用されます。
主なオプション一覧
seq コマンドで指定できる主なオプションは以下の3つです。
| オプション | 長い形式 | 役割 |
|---|---|---|
| オプションなし | - | 数値を改行(\n)区切りで順番に出力する |
-w | --equal-width | 最大桁数に合わせて先頭を 0 で埋め(ゼロパディング)、すべての数値の桁幅を揃える |
-f <書式> | --format=<書式> | printf 形式の浮動小数点フォーマット(%03g や %.2f など)を指定して出力する |
-s <文字列> | --separator=<文字列> | 数値同士の区切り文字を改行(\n)から <文字列> に変更する |
Bashのブレース展開({1..10})との違いと使い分け
Bashなどのシェルには、外部コマンドを呼び出さずに連番を展開できる「ブレース展開({1..10})」という機能があります。実務では以下のように使い分けるのが効果的です。
| 比較項目 | seq コマンド | ブレース展開({1..10}) |
|---|---|---|
| 仕組み | 外部コマンド(/usr/bin/seq)として実行 | シェル(Bash等)の組み込み機能として展開 |
| 変数を使った範囲指定 | 可能(例: seq 1 "$max") | 不可(Bashでは変数展開より先にブレース展開が評価されるため) |
| 小数の増分指定 | 可能(例: seq 0.1 0.1 0.5) | 不可(整数または1文字のアルファベットのみ) |
| 書式付き文字列の生成 | -f で1コマンドで記述可能 | 前後に文字列を結合(server-{001..005})して記述可能 |
特に重要なのがシェルスクリプト内で変数を使って連番を生成するケースです。Bashの仕様上、ブレース展開は変数展開よりも先に行われるため、{1..$n} と書いても連番には展開されません。
$ n=3
# ブレース展開に変数を入れると、そのまま文字列として出力される$ echo {1..$n}{1..3}
# seq コマンドなら変数の値を評価して連番を生成できる$ seq 1 "$n"123終了値や増分をコマンド引数や変数から動的に受け取るスクリプトでは、seq コマンド(またはC言語風の for ((i=1; i<=n; i++)) 構文)を使用します。
【基本】開始値・増分・終了値を指定して連番を出力する
まずはオプションを付けずに、整数・逆順(カウントダウン)・小数の連番を生成する基本的な使い方を確認します。
1から指定した数値までの連番を出力する
引数を1つだけ指定すると、1 からその数値までの連番が1行ずつ出力されます。2つ指定すると、<開始値> から <終了値> までの連番になります。
# 1 から 5 までの連番を出力する$ seq 512345
# 3 から 7 までの連番を出力する$ seq 3 734567増分(ステップ)を指定して飛び飛びの数値を出力する
引数を3つ指定すると、2番目の引数が増分(ステップ)として扱われます。偶数や奇数、5刻みの数値を生成したい場合に使用します。
# 2 から 10 まで、2 ずつ増やして出力する$ seq 2 2 10246810現在の値に <増分> を足した結果が <終了値> を超える時点で出力が終了するため、必ずしも最後の数値が <終了値> と一致するわけではありません(例: seq 1 2 6 の出力は 1, 3, 5 となります)。
逆順(カウントダウン)や小数の連番を出力する
大きい数値から小さい数値へカウントダウンさせたい場合は、2番目の引数(<増分>)に**負の数(マイナス値)**を指定します。
# 5 から 1 まで、1 ずつ減らして出力する$ seq 5 -1 154321注意点:
seq 5 1のように2つの引数だけで逆順を指定しても、省略された<増分>は常に+1として扱われます。開始値(5)がすでに終了値(1)を超えているため、エラーにはならず何も出力されずに終了します。逆順にする際は必ず中間に負の増分(-1など)を指定してください。
また、seq コマンドは数値を内部的に浮動小数点数として扱うため、小数を含む増分もそのまま指定できます。
# 0.1 から 0.9 まで、0.2 刻みで出力する$ seq 0.1 0.2 0.90.10.30.50.70.9【書式・整形】ゼロ埋め(0埋め)や区切り文字を変更する方法
ファイル名やテストデータを生成する際によく使われる -w・-f・-s オプションの使い方を解説します。
-wオプションで桁数を揃えてゼロ埋め(0埋め)する
-w(--equal-width)オプションを指定すると、出力される数値の中で最も桁数が大きいものに合わせ、先頭が 0 で埋められます(ゼロパディング)。
# 最大値「10」(2桁)に合わせて 01〜10 を出力する$ seq -w 1 1001020304050607080910ここで実務上の注意点として、-w オプションは引数に指定された数値の最大桁数を基準にするという仕様があります。例えば seq -w 1 3 と実行した場合、開始値 1 も終了値 3 も1桁であるため、ゼロ埋めは行われず 1, 2, 3 と出力されます。
終了値が1桁でも2桁や3桁でゼロ埋めしたい場合は、引数側の数値に 01 や 001 のように先頭の 0 を付けて桁幅を明示するか、次項の -f オプションを使用します。
# 1 と 3 はどちらも1桁のため、そのままでは1桁で出力される$ seq -w 1 3123
# 引数に 01(または 03)を指定すると、2桁幅に揃えられる$ seq -w 01 3010203-fオプションで任意の文字列や桁数をフォーマット指定する
-f(--format)オプションを使うと、printf スタイルの変換指定子を使って「任意の桁数のゼロ埋め」と「前後の文字列(プレフィックス・サフィックス)の付与」を同時に行えます。
# 「server-」の後ろに3桁ゼロ埋めの連番を付けて出力する$ seq -f "server-%03g" 1 4server-001server-002server-003server-004
# 「log_01.txt」のような連番ファイル名リストを生成する$ seq -f "log_%02g.txt" 1 3log_01.txtlog_02.txtlog_03.txt-f オプションを使用する際は、以下の2つの仕様に注意してください。
- 整数用の
%dは使用できない:seqは数値を浮動小数点数(double型)として処理するため、フォーマット指定子には浮動小数点用の%g、%f、%e(および%G、%F、%E、%a、%A)を使用します。整数用の%dを指定するとエラーになります。 -wオプションとは併用できない:-fと-wを同時に指定するとエラーになるため、書式とゼロ埋めを同時に行う場合は-f "%03g"のようにフォーマット文字列側でゼロ埋めを指定します。
# %d を指定するとエラーになる(%g や %f を使う)$ seq -f "%03d" 1 3seq: format ‘%03d’ has unknown %d directive
# -w と -f を同時に指定するとエラーになる$ seq -w -f "%03g" 1 3seq: format string may not be specified when printing equal width stringsTry 'seq --help' for more information.-sオプションで区切り文字を変更して1行に出力する
デフォルトでは各数値の後に改行(\n)が出力されますが、-s(--separator)オプションを使うとカンマやスペースなどの任意の文字列で連結して1行に出力できます。
# カンマ区切りで1行に出力する$ seq -s ',' 1 51,2,3,4,5
# スペース区切りで1行に出力する$ seq -s ' ' 1 51 2 3 4 5
# 空文字を指定して区切りなしで連結する$ seq -s '' 1 512345なお、生成した数値をN個ずつ複数列に並べて整形したい場合や、他コマンドの出力と横方向に結合したい場合は、pasteコマンド(seq 1 6 | paste - - など)と組み合わせる方法もよく使われます。
【実践】forループやxargsと組み合わせた活用例
生成した連番をシェルスクリプトの for ループや xargs コマンドに渡し、ファイル・ディレクトリの一括作成や繰り返し処理を行う実践例を紹介します。
forループで連番処理やリトライ処理を実行する
コマンド置換 $(seq ...) を使うと、seq の出力結果を for ループの変数に1つずつ代入して処理を繰り返すことができます。
$ for i in $(seq -w 01 3); do echo "backup_${i}.tar.gz" donebackup_01.tar.gzbackup_02.tar.gzbackup_03.tar.gzこのパターンは、バックアップファイルの世代管理や、疎通確認・APIAPI [エーピーアイ]Application Programming Interface。異なるソフトウェア間の接続口リクエストを指定回数だけ繰り返す処理などで幅広く活用できます。
xargsと連携して連番ディレクトリ・ファイルを一括作成する
-f オプションで生成した名前リストをパイプ(|)でxargsコマンドへ渡すと、for ループを書かずに1行のコマンドで連番ディレクトリやテストファイルを一括作成できます。
# dir_01 から dir_05 までの5つのディレクトリを一括作成する$ seq -f "dir_%02g" 1 5 | xargs mkdir
# 作成されたディレクトリを確認する$ ls -d dir_*dir_01 dir_02 dir_03 dir_04 dir_05親ディレクトリも含めて階層構造を一括作成したい場合は、mkdir -pコマンドと組み合わせて seq -f "2026/11/day_%02g" 1 5 | xargs mkdir -p のように記述できます。また、空のテストファイルを一括作成する場合は mkdir の部分をtouchコマンド(touch)に置き換えるだけです。
まとめ:seqコマンドで連番生成やループ処理を効率化しよう
本記事では、Linuxの seq コマンドによる連番の生成やゼロ埋め、書式指定の方法について解説しました。
記事の要点を以下にまとめます。
seqコマンドは<終了値>、<開始値> <終了値>、<開始値> <増分> <終了値>の3通りの引数指定で連番を出力できる。- 逆順(カウントダウン)にする場合は、
seq 5 -1 1のように必ず負の<増分>を明示する。 -wオプションで最大桁数に合わせたゼロ埋めができ、-f "prefix_%03g"を使えば任意の文字列と桁揃えを同時に指定できる(%dは使わず%gや%fを使用する)。- 変数を使った範囲指定や小数のステップ指定など、Bashのブレース展開(
{1..10})では対応できない場面で特に役立つ。
連番データの横方向への連結や、ほかのテキスト加工コマンドとの組み合わせについては、Linuxのテキスト処理・検索コマンドの使い方まとめもあわせて参考にしてください。
以上で本記事の解説を終わります。
よいITライフを!
人気記事
- 1
- 2
- 3
- 4
- 5
Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。