在Linux或UNIX下按访问,修改日期/时间查找文件

时间:2020-01-09 10:40:14  来源:igfitidea点击:

如何找到之前下载的pdf或文本文件?
Linux如何根据大致的时间查找文件?

您需要使用find命令。
每个文件都有三个时间戳记,它们记录对该文件执行某些操作的最后时间:

  • 一次访问(读取文件内容)
  • 更改状态(修改文件或其属性)ctime
  • 修改(更改文件内容)mtime

您可以搜索时间戳在一定期限内的文件,或者将它们与其他时间戳进行比较。

您可以使用-mtime选项。
如果该文件是N * 24小时前最后一次访问,则返回文件列表。
例如,要查找最近2个月(60天)内的文件,您需要使用-mtime +60选项。

  • -mtime +60表示您正在寻找60天前修改的文件。
  • -mtime -60表示少于60天。
  • -mtime 60如果您跳过+或恰好意味着60天。

因此,要查找60天前最后修改的文本文件,请使用

$ find /home/you -iname "*.txt" -mtime -60 -print

在屏幕上显示最近修改的文件的内容,使用

$ find /home/you -iname "*.txt" -mtime -60 -exec cat {} \;

使用wc命令计算文件总数

$ find /home/you -iname "*.txt" -mtime -60 | wc -l

您还可以使用访问时间来查找pdf文件。
以下命令将打印最近60天内访问的所有pdf文件的列表:

$ find /home/you -iname "*.pdf" -atime -60 -type -f

列出恰好在10天之前访问过的所有mp3:

$ find /home/you -iname "*.mp3" -atime 10 -type -f

还有一个名为-daystart的选项。
它从今天开始而不是从24小时之前开始测量时间。
因此,要列出昨天访问的主目录中的所有mp3,请执行以下命令

$ find /home/you -iname "*.mp3" -daystart -type f -mtime 1

其中:

  • -type f`仅搜索文件而不搜索目录

-daystart选项

-daystart选项用于测量从当天开始而不是24小时之前开始的时间。
找出昨天修改的所有perl(* .pl)文件,执行:

find /nas/projects/mgmt/scripts/perl -mtime 1 -daystart -iname "*.pl"

您还可以列出8-10天前修改过的perl文件,执行:要列出主目录树中两到四天前修改过的所有文件,请执行:

find /nas/projects/mgmt/scripts/perl -mtime 8 -mtime -10 -daystart -iname "*.pl"

-newer选项

要在/nas/images目录树中查找比/tmp/foo文件新的文件,请执行:

find /etc -newer /tmp/foo

您可以使用touch命令设置要搜索的日期时间戳,然后使用-newer选项,如下所示

touch --date "2010-01-05" /tmp/foo
# Find files newer than 2010/Jan/05, in /data/images
find /data/images -newer /tmp/foo