7日後のディレクトリを削除

7日後のディレクトリを削除

私は私のディレクトリに毎日バックアップファイルを作成します。

2020-04-01
2020-04-02
2020-04-03

まもなく

古いディレクトリとその内容を削除するコードを書く方法。これまでのところ、ディレクトリを削除するための以下のコードがありますが、それほどスマートではありません。あるディレクトリから別のディレクトリにファイルをコピーすると、変更日が変更されます。

find ~/delete/* -type d -ctime +6 -exec rm -rf {} \;

ベストアンサー1

ディレクトリ名でディレクトリを削除するには、次の手順を実行しますbash

#!/bin/bash

shopt -s nullglob
date=$(date -d '-7 day' '+%F')
for path in ~/delete/[0-9][0-9][0-9][0-9]-[01][0-9]-[0-3][0-9]; do
  if [[ -d $path && ${path##*/} < $date ]]; then
    echo rm -rf "$path"
  fi
done

これは、YYYY-MM-DDパターンと一致するパス名を繰り返し、ディレクトリではなく、名前が現在の日付(7日前)以前にアルファベット順にソートされていないディレクトリをスキップします。

有効にすると、nullglob一致するファイル/ディレクトリがなく、ループ内のコードが実行されない場合、パス名パターンは空の文字列に展開されます。

出力が期待どおりに表示されたら、echoスクリプトを削除してやり直して実際にディレクトリを削除してください。

おすすめ記事