連続した数字や日付や時刻を出力するには(seqコマンド)

数値

連続した整数を出力させるにはseqコマンドを使います。

こんな感じです。

数を1つ指定して、1からその数までの整数を出力するには

$ seq 5
1
2
3
4
5

1でない数からスタートして整数を出力するには、最初の値と最後の値を指定して

$ seq 3 5
3
4
5

さらに、とびとびの整数を出力するには、最初の値と飛び幅と最後の値を指定して

$ seq 10 2 20
10
12
14
16
18
20

整数以外の浮動小数点も扱えます。

$ seq 0 0.5 3
0.0
0.5
1.0
1.5
2.0
2.5
3.0

printfでゼロ埋めした数値

xargsprintfの組み合わせでできます。

$ seq 8 12
8
9
10
11
12

$ seq 8 12 | xargs printf "%04d\n"
0008
0009
0010
0011
0012

日付や時刻

連続した日付を出力するには、dateコマンドとこのseqコマンドを組み合わせて以下のようにしてできます。

$ for d in $(seq 5); do date -d "2020/03/31 + $d days" +%Y/%m/%d; done
2020/04/01
2020/04/02
2020/04/03
2020/04/04
2020/04/05

または、seqコマンドを0から始めるようにして、

$ for d in $(seq 0 4); do date -d "2020/04/01 + $d days" +%Y/%m/%d; done
2020/04/01
2020/04/02
2020/04/03
2020/04/04
2020/04/05

7日ずつ飛んだ日付を出力するには

$ for d in $(seq 0 7 28); do date -d "2020/04/01 + $d days" +%Y/%m/%d; done
2020/04/01
2020/04/08
2020/04/15
2020/04/22
2020/04/29

1時間ずつの日次を出力するには

$ for h in $(seq 0 5); do date -d "2020/04/01 + $h hours" "+%Y/%m/%d %H:%M:%S"; done
2020/04/01 00:00:00
2020/04/01 01:00:00
2020/04/01 02:00:00
2020/04/01 03:00:00
2020/04/01 04:00:00
2020/04/01 05:00:00

以上。