LoginSignup
0
1

More than 1 year has passed since last update.

Linux: 大量の日付付きダミーログファイルを作成する方法

Posted at

シェルスクリプトの単体試験で時々使用するのでメモしておきます。

実施環境:
Linux
[testuser@testhost ~]$ uname -a
Linux testhost 4.18.0-147.8.1.el8_1.x86_64 #1 SMP Thu Apr 9 13:49:54 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[testuser@testhost ~]$ echo $SHELL
/bin/bash

日付付きのダミーログファイルを作成する場合、1つ2つであればtouchコマンドを使用して次のように簡単に作成できます。

Linux
[testuser@testhost ~]$ touch -t 202106010900 test.log.20210601
[testuser@testhost ~]$ ls -l
-rw-r--r-- 1 testuser testgrp 0 Jun  1 09:00 test.log.20210601

上記は日付をピンポイントで指定していますが、「今日から3日前」のように日付を相対的に指定する場合、dateコマンドを利用して次のように書けます。

Linux
[testuser@testhost ~]$ date
Sun Jun  6 13:41:14 JST 2021
[testuser@testhost ~]$ touch -t `date -d "3 days ago" +%Y%m%d0900` test.log.`date -d "3 days ago" +%Y%m%d`
[testuser@testhost ~]$ ls -l
-rw-r--r-- 1 testuser testgrp 0 Jun  3 09:00 test.log.20210603

ただ、大量のダミーログファイルを作成する場合、これらのコマンドを単に1つずつ入力していくのは非常に大変です。
ではどうするかというと、for文を利用します。
以下の例では昨日から1週間前までの分のダミーログファイルを作成しています。

Linux
[testuser@testhost ~]$ date
Sun Jun  6 13:48:30 JST 2021
[testuser@testhost ~]$ for ((i=1;i<=7;++i)); do touch -t `date -d "$i days ago" +%Y%m%d0900` test.log.`date -d "$i days ago" +%Y%m%d`; done
[testuser@testhost ~]$ ls -l
-rw-r--r-- 1 testuser testgrp 0 May 30 09:00 test.log.20210530
-rw-r--r-- 1 testuser testgrp 0 May 31 09:00 test.log.20210531
-rw-r--r-- 1 testuser testgrp 0 Jun  1 09:00 test.log.20210601
-rw-r--r-- 1 testuser testgrp 0 Jun  2 09:00 test.log.20210602
-rw-r--r-- 1 testuser testgrp 0 Jun  3 09:00 test.log.20210603
-rw-r--r-- 1 testuser testgrp 0 Jun  4 09:00 test.log.20210604
-rw-r--r-- 1 testuser testgrp 0 Jun  5 09:00 test.log.20210605

少々長いコマンドですが、1つ1つ手入力するよりは圧倒的に楽になります。
数値やオプションを変更すれば、より長い期間のダミーログファイルを作成することや、日付付きでなく連番のファイルを作成することも可能です。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1