如何使用查找来查找最近N天或几分钟内已更改的文件

本文提供了一个示例,说明如何查找目录中最近N分钟或几天内已更改的所有文件,或已修改了N分钟或几天以上的文件。 这是使用find命令完成的。

要在目录和子目录中搜索最近N天(旧文件数据修改时间)已更改的文件,请使用:

find /directory/path/ -mtime -N -ls

哪里:

  • find 用于搜索文件(和其他文件)的Unix命令行工具
  • /directory/path/ 查找修改文件的目录路径。 用目录路径替换以搜索最后修改的文件 N
  • -mtime -N 最后用于匹配数据已更改的文件 N 天。 交换 N 带数字(整数)
  • -ls 列出结果文件(最后修改的文件) Nls -dils 标准输出格式。 您可以跳过此步骤,但是可以使用它来获取更多信息,例如文件大小,权限和修改日期。

例:

  • 在目录和子目录中,搜索前一天(24小时,现在到1天前)更改的所有文件。
find /directory/path/ -mtime -1 -ls

-mtime -1 是相同的 -mtime 0..

  • 查找最近30天内已更改的所有文件。
find /directory/path/ -mtime -30 -ls

您可能还会喜欢:Bash历史记录:执行每个命令时如何显示时间戳(日期/时间)

但是,如果您需要查找修改日期较旧的文件怎么办? N例如,是否已超过30天? 在这种情况下,您需要使用 +N 代替 -N, 像这样:

find /directory/path/ -mtime +N -ls

例:

  • 查找所有修改日期早于7天的文件。
find /directory/path/ -mtime +7 -ls

  • 查找超过48小时前(至少2天前)修改过的所有文件。
find /directory/path/ -mtime +1 -ls

  • 查找24到48小时前(1到2天前)修改过的所有文件。
find /directory/path/ -mtime 1 -ls

那么为什么 1 一天前 +1 2天/ 48小时或更早? 根据它 man find,小数部分将被忽略,因此,如果文件是一天23小时前最后一次修改 -mtime +1 它不匹配,并且将文件视为上次修改是在1天0小时0分钟0秒之前。 查看 这个解释 为什么这样

在这种情况下,如何至少提前一天更改所有文件? 用 +0

find /directory/path/ -mtime +0 -ls

用分钟代替几天

查找修改后的文件 N 几分钟前或更改日期已过 N,只需更换 -mtime 什么时候 -mmin..

因此,在搜索最后修改的文件时(文件数据修改时间旧) N 在目录和子目录中,请使用几分钟:

find /directory/path/ -mmin N -ls

例:

  • 搜索目录和子目录以查找最近5分钟内已更改的所有文件。
find /directory/path/ -mmin -5 -ls

  • 查找所有修改日期早于5分钟的文件。
find /directory/path/ -mmin +5 -ls

您可能还会喜欢:Starship是用rust编写的最小且快速的shell提示

Sidebar