gpt4 book ai didi

linux - 使用 find 选项和 -mtime +7*365 得到不同的结果

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:48 25 4
gpt4 key购买 nike

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

find -mtime +7*365

有人经历过像上面这样的语法吗?

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

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

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

最佳答案

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

那么我从未见过接受算术表达式的 find 实现。仅十进制非负整数(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。

关于linux - 使用 find 选项和 -mtime +7*365 得到不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56522666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com