Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2885

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

$
0
0
シェルスクリプトの単体試験で時々使用するのでメモしておきます。 実施環境: 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つ手入力するよりは圧倒的に楽になります。 数値やオプションを変更すれば、より長い期間のダミーログファイルを作成することや、日付付きでなく連番のファイルを作成することも可能です。

Viewing all articles
Browse latest Browse all 2885

Trending Articles