私は私のディレクトリに毎日バックアップファイルを作成します。
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
スクリプトを削除してやり直して実際にディレクトリを削除してください。