Linux
刪除特定日期之前的文件並排除文件夾下的直接文件
我想從氣流子文件夾中刪除所有超過 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
了氣流下的任何“隱藏”目錄也匹配。