検索コマンドと rm コマンドが除外リストに従わない場合があります。

検索コマンドと rm コマンドが除外リストに従わない場合があります。

どの状況でも削除しないでくださいディレクトリの除外リストを含めるために、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]文字列を引用符で囲みます。それ以外の場合、シェルは括弧で文字列を拡張しようとします。これは、現在の作業ディレクトリの内容によっては成功したり失敗したりすることがあります。

関連情報