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
もすべて一致します。