【Linux】seqコマンドの使い方|連番の生成・ゼロ埋め・書式指定

【Linux】seqコマンドの使い方|連番の生成・ゼロ埋め・書式指定

PR Amazonのアソシエイトとして、ITナレッジライフは適格販売により収入を得ています。

記事の文字数:3,782

Linuxのseqコマンドを使って、指定した範囲や増分で連番(数値列)を生成する方法を解説します。-wオプションによる0埋め(桁揃え)、-fによる書式指定、-sによる区切り文字の変更、forループやxargsと連携したファイル一括作成の実践例まで具体例付きで紹介します。

Linuxユーザにお勧めの本 ↗

最新版

ゼロからはじめるLinuxサーバー構築・運用ガイド 第2版 動かしながら学ぶWebサーバーの作り方

難易度
実用性
最新度

Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。

初心者向け

わかばちゃんと学ぶ サーバー監視

難易度
実用性
読みやすさ

マンガと図解が中心で圧倒的に読みやすい。負荷調査の手法がスッと理解できるようになります。

新しいLinuxの教科書 第2版

難易度
実用性
読みやすさ

一生モノの基礎知識が身につく定番書です。

ゼロからわかる Linuxコマンド200本ノック―基礎知識と頻出コマンドを無理なく記憶に焼きつけよう!

難易度
実用性
習得度

アウトプット重視で記憶に定着しやすい。反復練習でLinux操作が自由自在になります。

エンジニア1年生のための世界一わかりやすいLinuxコマンドの教科書

難易度
実用性
読みやすさ

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 LTSGNU coreutils 9.4(seq (GNU coreutils) 9.4)
AlmaLinux 9.4GNU coreutils 8.32(seq (GNU coreutils) 8.32)

Linuxのseqコマンドとは?連番を生成する基本機能

seq コマンドは、指定した範囲の数値を一定の増分(ステップ)で順番に生成し、標準出力へ書き出すコマンドです。コマンド名の seq は「sequence(連続・数列)」に由来します。

基本構文と引数の数による動作の違い

seq コマンドは、渡す引数の数(1個〜3個)によって解釈が変わります。

Terminal window
# 引数が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} と書いても連番には展開されません。

Terminal window
$ n=3
# ブレース展開に変数を入れると、そのまま文字列として出力される
$ echo {1..$n}
{1..3}
# seq コマンドなら変数の値を評価して連番を生成できる
$ seq 1 "$n"
1
2
3

終了値や増分をコマンド引数や変数から動的に受け取るスクリプトでは、seq コマンド(またはC言語風の for ((i=1; i<=n; i++)) 構文)を使用します。

【基本】開始値・増分・終了値を指定して連番を出力する

まずはオプションを付けずに、整数・逆順(カウントダウン)・小数の連番を生成する基本的な使い方を確認します。

1から指定した数値までの連番を出力する

引数を1つだけ指定すると、1 からその数値までの連番が1行ずつ出力されます。2つ指定すると、<開始値> から <終了値> までの連番になります。

Terminal window
# 1 から 5 までの連番を出力する
$ seq 5
1
2
3
4
5
# 3 から 7 までの連番を出力する
$ seq 3 7
3
4
5
6
7

増分(ステップ)を指定して飛び飛びの数値を出力する

引数を3つ指定すると、2番目の引数が増分(ステップ)として扱われます。偶数や奇数、5刻みの数値を生成したい場合に使用します。

Terminal window
# 2 から 10 まで、2 ずつ増やして出力する
$ seq 2 2 10
2
4
6
8
10

現在の値に <増分> を足した結果が <終了値> を超える時点で出力が終了するため、必ずしも最後の数値が <終了値> と一致するわけではありません(例: seq 1 2 6 の出力は 1, 3, 5 となります)。

逆順(カウントダウン)や小数の連番を出力する

大きい数値から小さい数値へカウントダウンさせたい場合は、2番目の引数(<増分>)に**負の数(マイナス値)**を指定します。

Terminal window
# 5 から 1 まで、1 ずつ減らして出力する
$ seq 5 -1 1
5
4
3
2
1

注意点: seq 5 1 のように2つの引数だけで逆順を指定しても、省略された <増分> は常に +1 として扱われます。開始値(5)がすでに終了値(1)を超えているため、エラーにはならず何も出力されずに終了します。逆順にする際は必ず中間に負の増分(-1 など)を指定してください。

また、seq コマンドは数値を内部的に浮動小数点数として扱うため、小数を含む増分もそのまま指定できます。

Terminal window
# 0.1 から 0.9 まで、0.2 刻みで出力する
$ seq 0.1 0.2 0.9
0.1
0.3
0.5
0.7
0.9

【書式・整形】ゼロ埋め(0埋め)や区切り文字を変更する方法

ファイル名やテストデータを生成する際によく使われる -w・-f・-s オプションの使い方を解説します。

-wオプションで桁数を揃えてゼロ埋め(0埋め)する

-w(--equal-width)オプションを指定すると、出力される数値の中で最も桁数が大きいものに合わせ、先頭が 0 で埋められます(ゼロパディング)。

Terminal window
# 最大値「10」(2桁)に合わせて 01〜10 を出力する
$ seq -w 1 10
01
02
03
04
05
06
07
08
09
10

ここで実務上の注意点として、-w オプションは引数に指定された数値の最大桁数を基準にするという仕様があります。例えば seq -w 1 3 と実行した場合、開始値 1 も終了値 3 も1桁であるため、ゼロ埋めは行われず 1, 2, 3 と出力されます。

終了値が1桁でも2桁や3桁でゼロ埋めしたい場合は、引数側の数値に 01 や 001 のように先頭の 0 を付けて桁幅を明示するか、次項の -f オプションを使用します。

Terminal window
# 1 と 3 はどちらも1桁のため、そのままでは1桁で出力される
$ seq -w 1 3
1
2
3
# 引数に 01(または 03)を指定すると、2桁幅に揃えられる
$ seq -w 01 3
01
02
03

-fオプションで任意の文字列や桁数をフォーマット指定する

-f(--format)オプションを使うと、printf スタイルの変換指定子を使って「任意の桁数のゼロ埋め」と「前後の文字列(プレフィックス・サフィックス)の付与」を同時に行えます。

Terminal window
# 「server-」の後ろに3桁ゼロ埋めの連番を付けて出力する
$ seq -f "server-%03g" 1 4
server-001
server-002
server-003
server-004
# 「log_01.txt」のような連番ファイル名リストを生成する
$ seq -f "log_%02g.txt" 1 3
log_01.txt
log_02.txt
log_03.txt

-f オプションを使用する際は、以下の2つの仕様に注意してください。

  1. 整数用の %d は使用できない: seq は数値を浮動小数点数(double 型)として処理するため、フォーマット指定子には浮動小数点用の %g、%f、%e(および %G、%F、%E、%a、%A)を使用します。整数用の %d を指定するとエラーになります。
  2. -w オプションとは併用できない: -f と -w を同時に指定するとエラーになるため、書式とゼロ埋めを同時に行う場合は -f "%03g" のようにフォーマット文字列側でゼロ埋めを指定します。
Terminal window
# %d を指定するとエラーになる(%g や %f を使う)
$ seq -f "%03d" 1 3
seq: format ‘%03d’ has unknown %d directive
# -w と -f を同時に指定するとエラーになる
$ seq -w -f "%03g" 1 3
seq: format string may not be specified when printing equal width strings
Try 'seq --help' for more information.

-sオプションで区切り文字を変更して1行に出力する

デフォルトでは各数値の後に改行(\n)が出力されますが、-s(--separator)オプションを使うとカンマやスペースなどの任意の文字列で連結して1行に出力できます。

Terminal window
# カンマ区切りで1行に出力する
$ seq -s ',' 1 5
1,2,3,4,5
# スペース区切りで1行に出力する
$ seq -s ' ' 1 5
1 2 3 4 5
# 空文字を指定して区切りなしで連結する
$ seq -s '' 1 5
12345

なお、生成した数値をN個ずつ複数列に並べて整形したい場合や、他コマンドの出力と横方向に結合したい場合は、pasteコマンド(seq 1 6 | paste - - など)と組み合わせる方法もよく使われます。

【実践】forループやxargsと組み合わせた活用例

生成した連番をシェルスクリプトの for ループや xargs コマンドに渡し、ファイル・ディレクトリの一括作成や繰り返し処理を行う実践例を紹介します。

forループで連番処理やリトライ処理を実行する

コマンド置換 $(seq ...) を使うと、seq の出力結果を for ループの変数に1つずつ代入して処理を繰り返すことができます。

Terminal window
$ for i in $(seq -w 01 3); do
echo "backup_${i}.tar.gz"
done
backup_01.tar.gz
backup_02.tar.gz
backup_03.tar.gz

このパターンは、バックアップファイルの世代管理や、疎通確認・APIAPI [エーピーアイ]Application Programming Interface。異なるソフトウェア間の接続口リクエストを指定回数だけ繰り返す処理などで幅広く活用できます。

xargsと連携して連番ディレクトリ・ファイルを一括作成する

-f オプションで生成した名前リストをパイプ(|)でxargsコマンドへ渡すと、for ループを書かずに1行のコマンドで連番ディレクトリやテストファイルを一括作成できます。

Terminal window
# 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ライフを!
ITナレッジライフ 運営者
この記事を書いた人

Z (ITナレッジライフ)

現役のITエンジニア。Linux、プログラミング、IT用語など、日々の業務で得た「痒いところに手が届く」技術情報を発信しています。

プロフィールと編集ポリシーを見る →

Linuxユーザにお勧めの本 ↗

最新版

ゼロからはじめるLinuxサーバー構築・運用ガイド 第2版 動かしながら学ぶWebサーバーの作り方

難易度
実用性
最新度

Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。

人気記事


記事を評価

Thanks!
目次
Scroll to Top