find コマンドまたはその他のコマンドを使用したディレクトリの削除

find コマンドまたはその他のコマンドを使用したディレクトリの削除

最後の2つのバックアップのみを保持し、残りのディレクトリは削除するコマンドを作成しようとします。

directory path = /apps/

以下はディレクトリです。ここに保管したいです。

  • source
  • source_2020-01-13
  • source_2019-12-09

ディレクトリを削除して古いディレクトリを削除します。スクリプトはcronを使用して100を超えるサーバーで実行されます。

ここでの問題は、findコマンドから古いディレクトリを追加または削除できないことですmtime。その理由は、バックアップディレクトリのタイムスタンプがすべてのサーバーで同じではないからです。デフォルトでは、コマンド/スクリプトはsource_YYYY_MM_DDという最後の2つのバックアップディレクトリを保持し、残りは削除する必要があります。

誰でも助けることができますか?

メモ:ソース_YYYY_MM_DDバックアップディレクトリです。

drwx------ 11 root   root   4096 Jul 22  2019 source_2019-07-22
drwx------ 11 root   root   4096 Jul 29  2019 source_2019-07-29
drwx------ 11 root   root   4096 Aug  5  2019 source_2019-08-05
drwx------ 11 root   root   4096 Aug 14  2019 source_2019-08-14
drwx------ 11 root   root   4096 Oct 14  2019 source_2019-10-14
drwx------ 11 root   root   4096 Dec  9 03:59 source_2019-12-09
drwx------ 11 root   root   4096 Jan 13 05:20 source_2020-01-13
drwxr-x--- 12 root   root   4096 Apr 21 09:11 source

ベストアンサー1

ls -d1 /apps/source_20??-??-??/ | head -n -2 | xargs rm -rf

これにより、
ls -d1 /apps/source_20??-??-??/一致するディレクトリのみが並べ替えられた順序で一覧表示され、
head -n -2最後の2つのエントリがインポートされ、
xargs rm -rfディレクトリが削除されます。

おすすめ記事