如何使用查找来查找最近N天或几分钟内已更改的文件
本文提供了一个示例,说明如何查找目录中最近N分钟或几天内已更改的所有文件,或已修改了N分钟或几天以上的文件。 这是使用find命令完成的。
要在目录和子目录中搜索最近N天(旧文件数据修改时间)已更改的文件,请使用:
find /directory/path/ -mtime -N -ls
哪里:
find
用于搜索文件(和其他文件)的Unix命令行工具/directory/path/
查找修改文件的目录路径。 用目录路径替换以搜索最后修改的文件N
天-mtime -N
最后用于匹配数据已更改的文件N
天。 交换N
带数字(整数)-ls
列出结果文件(最后修改的文件)N
天ls -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提示