删除特定日期之前的文件并排除文件夹下的直接文件

删除特定日期之前的文件并排除文件夹下的直接文件

我想从气流子文件夹中删除所有超过 10 天的文件

我使用了以下命令:

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

但排除气流文件夹下存在的所有文件: 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

您需要做的就是添加 -mindepth 全局选项,如下所示:

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

答案2

要告诉find只查看 /var/log/airflow 的子文件夹,只需给它这些起点:

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

这会强制在 /var/log/airflow 下存在一个子目录以便匹配。我设置了dotglob气流下的任何“隐藏”目录也匹配。

相关内容