查找已使用脚本修改的文件?

查找已使用脚本修改的文件?

我需要在给定目录中查找最近 N 天内修改过的文件,其中 N 是脚本的第二个参数。基本上,我需要给命令提供 2 个数字(参数)并运行一个脚本来执行此操作。

这行代码是否可以正确查找文件?

find . -type f -mtime $2 -exec ls -l {} \;

答案1

有点。您不需要-exec ls -l {} \;,该find命令已经列出了文件。如果您想列出更多详细信息,可以使用find -ls。两者都没有什么问题-exec ls ...,如果你愿意的话也可以,只是不需要。

-mtime N找到被修改的文件确切地N天前。详细信息位于man find

  +n     for greater than n,

  -n     for less than n,

   n      for exactly n.

因此,要查找最近 2 天内修改的文件,您可以运行

find /target/path -mtime -2 -ls

请注意,find .将在当前目录中搜索。要在特定目录中搜​​索,请使用类似find /path/to/dir.如果第一个参数是目标目录,请使用(请记住始终引用您的变量):

find "$1" -mtime -"$2" -ls

另请注意,-mtime仅处理 24 小时周期“天”。编写命令时需要考虑到这一点。正如man find(这是针对-atime但同样适用于)中所解释的-mtime

文件上次访问时间为 n*24 小时前。当 find 计算出上次访问该文件是在多少个 24 小时周期之前,任何小数部分都会被忽略,因此要匹配 -atime +1,文件必须至少在两天前被访问过

相关内容