90日後のディレクトリを見つけて削除しますが、2つのサブディレクトリを無視するcronをどのように作成できますか?

90日後のディレクトリを見つけて削除しますが、2つのサブディレクトリを無視するcronをどのように作成できますか?

私が所有しているもの

現在、90日を過ぎたディレクトリとファイルを見つけて削除するようにcronが設定されています。

私は必要です

90日を過ぎたディレクトリとファイルを削除したときに、crontabに両方のディレクトリを無視するようにしたいと思います。

今まで何をしたのか

このcrontabはディレクトリとファイルを削除し、dir1を無視しますが、2番目の-not -pathで指定したにもかかわらず、dir2からディレクトリとファイルを削除し続けます。

00 4 * * * sudo find /home/*/* -type d -not -path "/home/dir1/*" -not -path "/home/dir2/*" -mtime +90 -exec rm -r "{}" \;
02 4 * * * sudo find /home/*/* -type f -not -path "/home/dir1/*" -not -path "/home/dir2/*" -mtime +90 -exec rm "{}" \;

実際の問題

ディレクトリ/ファイルを見つけて削除するときに2つのディレクトリをどのように無視できますか?上記の例では動作させることができないので、-not -pathを2回指定できますか?

ベストアンサー1

まず、crontabコマンドフィールドではありませんbashbashコマンドフィールドを乱用するのではなく、他の場所に保存されているスクリプトを呼び出す必要があります。

man find xargs読んで

#!/bin/bash
find /home/*/* -type d \( -name dir1 -o -name dir2 \) -prune -type f -mtime +60 -print0 | \
  xargs -0 -r rm

おすすめ記事