Linux

刪除特定日期之前的文件並排除文件夾下的直接文件

  • September 13, 2018

我想從氣流子文件夾中刪除所有超過 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

所以氣流下的所有子文件夾及其文件都將被抹去,但氣流下的文件不會被抹去。在那種情況下,我該如何更改我的命令以支持排除。

您需要做的就是添加 -mindepth 全域選項,如下所示:

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

要告訴find只查看 /var/log/airflow 的子文件夾,只需給它以下起點:

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

這會強制在 /var/log/airflow 下存在一個子目錄以進行匹配。我設置dotglob了氣流下的任何“隱藏”目錄也匹配。

引用自:https://unix.stackexchange.com/questions/468769