次のようなファイルがあるとします。
AA_XX_20111208
AA_XX_20111207
AA_XX_20111206
AA_XX_20111205
AA_XX_20111204
AA_XX_20111203
それでは、日付部分を使用して過去2ヶ月のファイルをどのように取得できますか?
たとえば、今月は2月ですが、1月と12月に関連するファイルの両方をインポートする必要があります。 3月には1月と2月のファイルをインポートし、毎月発生する必要があります。
例えば。 2月には12月と1月のファイルが必要です。
AA_XX_20121208
AA_XX_20121207
AA_XX_20121206
...すぐに
AA_XX_20130108
AA_XX_20130107
AA_XX_20130106
...すぐに
ベストアンサー1
GNU日付があると仮定すると、この関数は過去2ヶ月間のすべての日付を提供します。
dates_in_previous_two_months () {
for month_delta in 0 1; do
# get the last day of a previous month
day=$(date -d "$(date +%Y-%m-01) -$month_delta month -1 day" +%Y%m%d)
until [[ $day == *00 ]]; do
echo $day
((day--))
done
done
}
2013 年 2 月の特定の日付について、以下が返されます。
20130131
20130130
20130129
[... and so on until ...]
20121203
20121202
20121201
20130228
3月はからまでの日付で返されます。20130101
次のように使用できます。
for date in $(dates_in_previous_two_months); do
"fetch" AA_XX_$date
done
または
dates_in_previous_two_months | xargs -I{} "fetch" AA_XX_{}