どの状況でも削除しないでくださいディレクトリの除外リストを含めるために、7日前に変更されたfindおよびrm -rfディレクトリのリストを実行しています。
これはスクリプトから抜粋したものです。
find [path-to-base-dir] -maxdepth 1 -type d ! -name [dir1] ! -name .snapshot \
! -name . ! -name [dir2] ! -name [dir3] ! -name [dir4] ! -name [dir5] ! -name [dir6] \
! -name [dir7] ! -name [dir8] ! -name [dir9] ! -name [dir10] ! -name [dir11] ! -name [dir12]\
-mtime +7 -exec rm -rf {} \; -print
これは毎日のクローンで予約されています。ほとんどの場合、これはうまくいきます。ただし、ある日は除外リストを無視してすべてのディレクトリを削除します。どうすればこれが起こりますか?条件リストは非常に長いため、すべての種類の遅延のために、findコマンドは!name条件を無視することができます。
答え1
探すデフォルトのディレクトリパス-最大深さ1 \ -dタイプ! - 名前多くの例外\ -mtime +7 -exec rm -rf {}\;
ディレクトリが失敗する可能性がある唯一の条件は、にpath-to-base-dir
含まれていない場合ですbunch-of-exceptions
(含まれていますが正確に一致する場合にのみ一致します)。.
過去7日間にディレクトリが変更されていない場合は削除されます。path-to-base-dir
.
path-to-base-dir
-mtime +7
がfind
あるので、除外開始ディレクトリを使用してください。-mindepth
-maxdepth
-mindepth 1
答え2
この[dir1]
文字列を引用符で囲みます。それ以外の場合、シェルは括弧で文字列を拡張しようとします。これは、現在の作業ディレクトリの内容によっては成功したり失敗したりすることがあります。