Linux 使用find选项和-mtime+;7*365

Linux 使用find选项和-mtime+;7*365,linux,unix,find,aix,Linux,Unix,Find,Aix,我正在将一些脚本从AIX移动到RHEL,我发现了一个以下格式的find命令: find -mtime +7*365 有没有人经历过上述语法 将7*365替换为2555会产生不同的结果。是的,我无法追踪剧本的原创者来亲自询问 编辑: 我忘了带“+”符号,抱歉。 我重点讨论了-mtime值中的乘法,但是完整的命令是 find /path/ -mtime +7*365 -name 'SOME_NAME*.*' 首先,如果当前目录中有一个文件的名称以7开头,以365结尾,7*365将替换为匹配文件的

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

find -mtime +7*365
有没有人经历过上述语法

将7*365替换为2555会产生不同的结果。是的,我无法追踪剧本的原创者来亲自询问

编辑: 我忘了带“+”符号,抱歉。 我重点讨论了-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,但是对于
7*365
,我希望会出现错误,或者如果整数解析器非常松散,那么可能会将其解析为7或0

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

您所写内容的修改版本如下:

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

它也可以在
interval
上使用引号(只要
IFS
不包含数字)。之所以这样做,是因为
typeset-i
interval
声明为整数变量。当您为
interval
赋值时,shell执行算术运算,因此
interval
被设置为
2555
。这只适用于ksh和bash,而不适用于普通sh。

提供了对两台或三台AIX机器的访问。你可能会考虑给项目和作者捐赠多少时间,这是运行AIX的POWER 8,
$find-mtime 7*365
导致
find:find缺少“-mtime”的参数
。find/path/-mtime+7*365-name“SOME_name**”在源系统上运行完全正常我正在移动脚本from@kibicrealu1有超过2555天的文件吗?如果旧的AIX版本有一个草率的解析器,
+7*365
被解析为
+7
(列出超过7天的文件)或
+0
(列出所有修改时间在过去的文件)。@Gilles它似乎与您编写的完全一样,非常感谢+7&+7*365返回相同的答案,然后就是草率的解析器!