特定の日付より前のファイルを削除し、フォルダの直下のファイルを除外します。

特定の日付より前のファイルを削除し、フォルダの直下のファイルを除外します。

airflowサブフォルダから10日以上経過したすべてのファイルを削除したいと思います。

次のコマンドを使用しました。

 find  /var/log/airflow/  -type f -mtime +10  -delete

ただし、airflowフォルダ(file1、file2、file3、file4、file5)の下にあるすべてのファイルは除外されます。

pwd

/var/log/airflow

ls -ltr

drwxr-xr-x 2 root root 6 Sep 13 11:15 folder1
drwxr-xr-x 2 root root 6 Sep 13 11:15 folder2
drwxr-xr-x 2 root root 6 Sep 13 11:15 folder3
drwxr-xr-x 2 root root 6 Sep 13 11:15 folder4
drwxr-xr-x 2 root root 6 Sep 13 11:15 folder5
-rw-r--r-- 1 root root 0 Sep 13 11:15 file1
-rw-r--r-- 1 root root 0 Sep 13 11:15 file2
-rw-r--r-- 1 root root 0 Sep 13 11:15 file3
-rw-r--r-- 1 root root 0 Sep 13 11:15 file4
-rw-r--r-- 1 root root 0 Sep 13 11:15 file5

したがって、airflowの下のすべてのサブフォルダとそのファイルは消去されますが、Airflowの下のファイルは消去されません。この場合、除外をサポートするようにコマンドをどのように変更できますか?

答え1

あなたがしなければならないことは、-minlengthグローバルオプションを次のように追加することです。

$ find /var/log/airflow/ -mindepth 2 -type f -mtime +10  -delete

答え2

/var/log/airflow のサブフォルダだけを表示するように指示するには、find次の開始点を指定するだけです。

shopt -s dotglob
find  /var/log/airflow/*/* -type f -mtime +10 -delete

これにより、/var/log/airflowの下のサブディレクトリが一致します。エアフローの下に設定した「隠し」ディレクトリdotglobもすべて一致します。

関連情報