ファイル名で指定した日付に基づいてファイルを削除する

ファイル名で指定した日付に基づいてファイルを削除する

ディレクトリには次のzipファイルがあります。

DBSOURCE20150601.gz
WINDOWS20150504.gz
NETWORK20150609.gz
PATCHTEST20150512.gz
.................
................

ファイル名に記載されている日付に基づいて10日を過ぎたzipファイルを削除したいと思います。例えば、

WINDOWS20150604.gz is file having date 4 June 2015.

私は次のことをしようとしていますが、なぜ10日後のファイルだけを削除するのではなく、すべてのzipファイルを削除するのかわかりません。

ten_days=$(date -d "10 days ago" +%Y%m%d)
for f in *[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].gz; do
  date=${f#*}
  date=${date%.gz}
  (( $date < $ten_days )) && rm "$f"
done

ベストアンサー1

ファイル名から日付が正しく抽出されませんでした。これを行うには、次の操作を行う必要があります。

    date=${f#*}
    date=${date%.gz}
    date=`echo $date| rev `
    date=${date:0:8}
    date=`echo $date| rev `

これで日付を比較して削除できます。

おすすめ記事