web-dev-qa-db-ja.com

5日より古いフォルダーを削除する

フォルダー構造のようなカレンダーを使用してファイルを整理するバックアップフォルダーがあります。これらを5日ごとに削除したいのですが、メインフォルダーが5日より古いため、完全バックアップを削除してしまいます。

フォルダー構造:

Backup
    -> 2017
          -> October
                 -> 28
                 -> 29
                 -> 30
                 -> 31
          -> November
                 -> 1
                 -> 2
                 -> 3

私はこのコマンドを実行しようとしました:

find /mnt/backup/* -type d -mtime +5 -execdir rm -rf {} \;

ただし、5日以上前のディレクトリ2017が削除されます。つまり、すべてのサブフォルダーが削除されます。ここで、5日前のディレクトリのみを削除します。たとえば、今日が11月3日だった場合、ディレクトリ28と29だけを削除したいです。その後、11月5日になったら、10月のディレクトリ全体を削除して、そこにあるすべてのものが5日以上経過するようにします。助言がありますか?

ありがとう

2
Stuart

-mindepth 1に触れたくない場合は、2017を使用します。

$ mkdir -p foo/2017/{October/{28..31},November/{1..3}}
$ touch -d 'now - 6 days' foo/2017/October/{28,29} foo/2017
$ find foo/* -mindepth 1 -mtime +5
foo/2017/October/28
foo/2017/October/29
$ find foo/* -mtime +5
foo/2017
foo/2017/October/28
foo/2017/October/29

foo/2017ではなくfooから開始する場合は、-mindepth 2を使用します。

$ find foo/ -mindepth 2 -mtime +5
foo/2017/October/28
foo/2017/October/29
3
muru