查找选项和 -mtime +7*365 的不同结果

Different results with find option and -mtime +7*365

我正在将一些脚本从 AIX 移动到 RHEL,我发现了以下格式的查找命令:

find -mtime +7*365

有没有人遇到过类似上面的语法?

将 7*365 替换为 2555 会得到不同的结果。是的,我无法追踪该脚本的原始创建者亲自询问。

编辑: 我忘记了一个“+”号,抱歉。 我专注于 -mtime 值的乘法,但完整的命令是

find /path/ -mtime +7*365 -name 'SOME_NAME*.*'

首先,如果当前目录中存在名称以7开头并以365结尾的文件,则7*365被替换为匹配文件的名称(s).为了保证 find 看到 7*365,需要保护通配符,例如find -mtime '7*365'find -mtime 7\*365.

那我就没见过接受算术表达式的find实现了。只有一个 non-negative 十进制整数(GNU find 也接受带前导 0x 的十六进制),带可选前导 -+AIX man page 表示需要“十进制整数”(可选前导 -+)。我这里没有 AIX 来测试,但是使用 7*365,我预计会出现错误,或者如果整数解析器非常草率,它可能会被解析为 7 或 0。

要查找大约 7 年前修改过的文件,您需要告诉 shell 执行算术运算:find -mtime $((7*365)).

你写的 确实 工作的修改版本如下:

typeset -i interval
interval=7*365
find … -mtime "$interval"

它也可以在 interval 上不加引号(只要 IFS 不包含数字)。这样做的原因是 typeset -iinterval 声明为整数变量。当您为 interval 赋值时,shell 执行算术运算,因此 interval 被设置为 2555。这仅在 ksh 和 bash 下有效,在普通 sh.

下无效