連続した数字や日付や時刻を出力するには(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でゼロ埋めした数値
xargs
とprintf
の組み合わせでできます。
$ 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
以上。