すべての古いファイル、フォルダ、サブフォルダを削除するコマンド

すべての古いファイル、フォルダ、サブフォルダを削除するコマンド

31日以上更新されていないすべてのファイル、フォルダ、およびサブフォルダを削除するコマンドが必要です。私はこれを試しました

find . -mindepth 1 -mtime +31 -exec rm -rf "{}" \;

しかし、このような階層がある場合

.
├── old_sub_folder1
└── old_sub_folder2
    ├── old_file
    └── old_sub_folder3
        └── new_file

old_*古いフォルダ\ファイルはどこにあり、new_file新しいファイルはどこにありますか?

このコマンドはすべてを削除します。日付がold_sub_folder2作成された後は更新されないためです。new_file

old_sub_folder2/old_sub_folder3/new_file を削除しないコマンドが必要です

ベストアンサー1

問題は、コマンド-rにオプションを追加することです。rmフォルダが空でなくてもフォルダは削除されます。

これは2つのステップで行う必要があります。

  1. 削除のみ古いファイル:

    find . -type f -mtime +31 -delete

  2. 古いフォルダを削除するには、そのフォルダが空の場合は、次の点を確認してください。ここ、少し調整します。

    find . -type d -empty -mtime +31 -delete

おすすめ記事