我正在编写一个脚本来查找给定文件夹中超过 30 天的文件。根据要求,我必须仅删除扩展名为.log或.out 的文件并跳过子目录。
以下命令返回 30 天前修改的所有 .log* 文件。然而,它正在返回所有 .out 文件,甚至是最近的文件。下面的代码有问题吗?
find -maxdepth 1 -mtime +30 -type f -name "*.log*" -o -name "*.out*"
Run Code Online (Sandbox Code Playgroud)
你能告诉我上面的陈述有什么问题吗
尝试:
find -maxdepth 1 -mtime +30 -type f \( -name "*.log*" -o -name "*.out*" \)
Run Code Online (Sandbox Code Playgroud)
问题是find
绑定逻辑 - 并且比逻辑 - 或更紧密。父母反对这一点。
如果没有括号,find
寻找匹配的文件,无论是(A)-mtime +30 -type f -name "*.log*"
或(B) -name "*.out*"
。
使用括号,find
正在寻找 (a) 匹配-mtime +30 -type f
和(b) 匹配-name "*.log*"
或 的文件-name "*.out*"
。