现在我想查找大小大于25MB且日期为前7天的文件,如何使用or?现在我是这样写的:
find /var/lib/docker/ -type f ( -size +25M -or -mtime +7 ) -name *.log
但它不起作用。
答案1
假设您实际上是指 OR(您的文本表示 AND),那么您的命令看起来是正确的,除了需要*.log
引用模式之外。 and(
还)
需要加引号或转义,以便 shell 不认为它是子 shell:
find /var/lib/docker/ -type f \( -size +25M -o -mtime +7 \) -name '*.log'
使用'(' ... ')'
也可以,就像使用双引号一样。
如果不引用*.log
,shell 将在执行之前尝试针对当前目录中的所有文件名扩展该模式find
。
在上面的命令中,我选择使用-o
而不是非标准的-or
。
如果您关心效率,您可以将测试重新安排为
find /var/lib/docker/ -name '*.log' -type f \( -size +25M -o -mtime +7 \)
这意味着find
不必使用stat
调用来获取每个文件的大小和时间戳,除非它们的名称匹配*.log
。