如何按创建日期查找最近的文件?

如何按创建日期查找最近的文件?

如果我想按名称查找文件,我会执行以下操作:

find -name app

如果我想按类型查找文件,我会执行以下操作:

find -name app -type d

但是,由于 app 是一个很通用的名称,因此会出现很多结果。我想查找今天创建的名为 app 的目录。是否有标志或命令可以实现此目的?

答案1

/在整个文件系统中搜索

  • 目录 ( -type d),
  • 称为app-name app),
  • 修改时间在一天之内(即 24 小时前)( -mtime 0),

...使用:

find / -name app -type d -mtime 0

来源: man find

请特别参阅标志的解释-mtime和“ find $HOME -mtime 0”示例:

[匹配-mtime 0,文件必须在 24 小时以内发生过修改。

(因此,文件修改后的天数是四舍五入到最接近的整数以便匹配-mtime。)


为了文件时间戳的目的,创建被视为修改的一种形式,因此即使文件内容在创建后没有更改,此方法也会起作用。它还会匹配最近一天修改时间戳较早创建的文件夹,但您可能没有很多这样的文件夹,其确切名称是app

当文件创建通常不存储在文件系统中。但是元数据上次更改的时间(例如,名称/位置、所有权、权限)被存储。如果您希望通过此方式了解文件内容的修改时间,请使用-ctime代替-mtime

find / -name app -type d -ctime 0

对于-mtime和而言-ctime,文件的原始创建均视为修改/状态改变。

答案2

获取日期之间所有修改过的文件:2020-02-282020-03-28

find . -type f -newermt 2020-02-28 -not -newermt 2020-03-28

答案3

命令查找选项:

如果您需要多天前的特定日期范围。

示例查找 /data/docs 目录中 2013 年 2 月 1 日至 2014 年 2 月 1 日之间修改的文件:

touch --date "2013-02-01" /tmp/start
touch --date "2014-02-01" /tmp/end
find /data/docs -type f -newer /tmp/start -not -newer /tmp/end

您可以将列表保存到名为 findlist.txt 的文本文件中,如下所示:

find /data/docs -type f -newer /tmp/start -not -newer /tmp/end > findlist.txt

答案4

您可以使用修改时间, 任何一个

find -name app -type d -mtime -1

(24 小时前修改少于 1 次)或

find -name app -type d -newermt yesterday

相关内容