我正在编写一个脚本来查找给定文件夹中超过 30 天的文件。根据要求,我必须仅删除具有扩展名的文件。日志或者。出去并跳过子目录。
以下命令返回 30 天前修改的所有 .log* 文件。但是,它返回所有 .out 文件,甚至是最近的文件。下面的代码有什么问题吗?
find -maxdepth 1 -mtime +30 -type f -name "*.log*" -o -name "*.out*"
你能告诉我上面的陈述有什么问题吗
答案1
尝试:
find -maxdepth 1 -mtime +30 -type f \( -name "*.log*" -o -name "*.out*" \)
问题是find
逻辑或的结合比逻辑或更紧密。括号抵消了这一点。
没有括号,find
正在寻找匹配的文件任何一个(A)-mtime +30 -type f -name "*.log*"
或者(二) -name "*.out*"
.
使用括号,find
正在查找 (a) 匹配的文件-mtime +30 -type f
和(b) 匹配-name "*.log*"
或-name "*.out*"
。