特定の日付範囲内のすべてのログファイルを分類する方法

特定の日付範囲内のすべてのログファイルを分類する方法

次の名前のログファイルがあります。

localhost_log_file.2017-09-01.txt
localhost_log_file.2017-09-02.txt
....

localhost_log_file.2017-10-30.txt

つまり、各ログファイルの形式は次のようになります。

localhost_log_file.YYYY-MM-DD.txt

2017-09-03と2017-10-08の間のすべてのログファイルを収集したいと思います。つまり、fromlocalhost_log_file.2017-09-03.txtからlocalhost_log_file.2017-10-08.txt

私が今やっていることは、次のコマンドをそれぞれ個別に実行して3つの中間ファイルを生成することです。

for((i=3;i<=9;i++)) do cat localhost_log_file.2017-09-0$i.txt >> log1.csv ; done;

for((i=10;i<=30;i++)) do cat localhost_log_file.2017-09-$i.txt >> log2.csv ; done;

for((i=1;i<=8;i++)) do cat localhost_log_file.2017-10-0$i.txt >> log3.csv ; done;

その後、中間ファイルを次のように結合しました。

cat log1.csv log2.csv log3.csv> totallog.csv

もっと良い方法がありますか?

ベストアンサー1

中かっこ拡張を入れ子にできます。

短くて甘い:

cat localhost_log_file.2017-{09-{03..30},10-{01..08}}.txt > totallog.csv

一部のシステム(macOSなど)は以前のバージョンのBashを使用しており、中括弧拡張整数シーケンスから先行ゼロが削除されたため機能しません。 Linuxの場合、これはうまくいきます。

おすすめ記事