列出最近x天修改过的文件,今天除外

时间:2016-03-08 03:31:43

标签: bash time find

这列出了最后一天(24小时)修改过的文件,-mtime -1,其名称中包含字符串“UGW”,-name '*UGW*'

find ./ -mtime -1 -type f -name '*UGW*' -printf '%Tc %p\n' | sort

是否有一种简单的方法可以修改它,以便我只列出最后X天但今天排除?

注意: 我在这里排序,但我认为这不是按时间戳正确排序。

EDIT1 基于以下的anser获得以下错误

:~/tmp$ find ./ -mtime -1 -type f -name '*' -printf '%Tc %p\n'                                                                    Tue 08 Mar 2016 12:25:01 NZDT ./compareKPIs-log
    Mon 07 Mar 2016 18:05:02 NZDT ./log-file
    Tue 08 Mar 2016 12:25:01 NZDT ./compareKPIs-error
    Mon 07 Mar 2016 18:05:02 NZDT ./backup_public_html_20160307.tgz


:~/tmp$ comm -13 <(find ./ -daystart -mtime -1 -type f   -printf '%Tc %p\n' ) <(find ./ -daystart -mtime -3 -type f   -printf '%Tc %p\n' )
    Sun 06 Mar 2016 18:05:00 NZDT ./backup_public_html_20160306.tgz
    comm: file 2 is not in sorted order
    Mon 07 Mar 2016 18:05:02 NZDT ./log-file
    comm: file 1 is not in sorted order
    Mon 07 Mar 2016 18:05:02 NZDT ./backup_public_html_20160307.tgz

1 个答案:

答案 0 :(得分:0)

***编辑:实际的方法:

find ./ -daystart -mtime -3 -type f  ! -mtime -1  -printf '%Tc %p\n'

用途:

  • ! -mtime -1今天要排除
  • -daystart从00:00开始

真的很讨厌,但是

comm -13 <(find ./ -daystart -mtime -1 -type f   -printf '%Tc %p\n' | sort) <(find ./ -daystart -mtime -3 -type f   -printf '%Tc %p\n' | sort)

comm的命令行选项为:

-1 suppress column 1 (lines unique to FILE1)

-2 suppress column 2 (lines unique to FILE2)

-3 suppress column 3 (lines that appear in both files)