日が経過したすべての「コンテンツ」(ディレクトリとファイル)をどのように削除しますか?

日が経過したすべての「コンテンツ」(ディレクトリとファイル)をどのように削除しますか?

わかりましたfind -mtime +x -delete。しかし、すべての「古いコンテンツ」(隠しファイルを含む)を削除するにはどうすればいいですか?それともスクリプトで使用しますか?たとえば、ディレクトリがある場合target_dir

  • target_dirX日の間に深い内容が変更されていないすべてのフォルダとサブフォルダを削除します(たとえば、以前のディレクトリツリーブランチを削除します)。
  • target_dirX日間変更されていないすべてのファイルを削除します。

編集する: 関連このトピックただし、最初にファイルを削除すると、2番目のステップで削除されないように古いディレクトリの変更日が「更新」されるため、許可された答えは実際には機能しません。隠しファイル/目次もわかりません。 。 。

ベストアンサー1

多くのテストを行った後、最も簡単な方法は次のものを使用することです。

find /path/to/dir -mtime +30 -delete

更新されたコンテンツを含むブランチを除くすべてのアイテムが削除されます。

ただし、同時に次の点に注意してください。 (a) 動作しません: find /path/to/dir/* -mtime +30 -delete; (b)/path/to/dir古いコンテンツのみが含まれ、それ自体が更新されていない場合は、それ自体が削除されます。

したがって、ディレクトリを保存する方法は、最初のfindコマンドを実行してからディレクトリがまだ存在することを確認し、そうでない場合は再生成することです。

おすすめ記事