linux + rm -rf を使用してコマンドを検索します。

linux + rm -rf を使用してコマンドを検索します。

次のコマンドが/ varの下のtmpディレクトリを削除するのはなぜですか。これを防ぐ方法は何ですか?

  find /var/tmp -type d   -ctime -1  -exec rm -rf {} \;


pwd
/var/tmp
[root@linux /var/tmp]# find /var/tmp -type d -ctime -1 -exec rm -rf {} \;
find: /var/tmp: No such file or directory

答え1

見つかった最初のディレクトリfind /var/tmpはです/var/tmp。そのコマンドをスキップしてGnuを使用するには、findコマンドを次のように変更できます。

find /var/tmp -depth -mindepth 1 -type d -ctime -1  -exec rm -rf {} \;

または

find /var/tmp -mindepth 1 -type d -ctime -1  -exec rm -rf {} \; -prune

いいえ-depth、サブディレクトリの削除-pruneによってエラーメッセージが表示されることがあります。rm -rf- 見たことがあるかもしれませんfind。サブディレクトリが最初に呼び出されるように-depthします。rm -rしかし、サブツリーごとに一度だけ実行すればrm -rf十分です-prune

答え2

論理NOT演算子を使用する!か、-not/var/tmpパスを結果から除外します。注:-notPOSIXと互換性がありません。

find /var/tmp -type d -ctime -1 ! -path /var/tmp -exec rm -rf {} \;

または

find /var/tmp -type d -ctime -1 -not -path /var/tmp -exec rm -rf {} \;

関連情報