相关疑难解决方法(0)

带有多个 `-name` 和 `-exec` 的 `find` 只执行 `-name` 的最后一个匹配项

当我使用

find . -type f -name "*.htm*" -o -name "*.js*" -o -name "*.txt"

它找到所有类型的文件。但是当我-exec在最后添加时:

find . -type f -name "*.htm*" -o -name "*.js*" -o -name "*.txt" -exec sh -c 'echo "$0"' {} \;

它似乎只打印.txt文件。我究竟做错了什么?

注意:使用 MINGW (Git Bash)

find

96
推荐指数
2
解决办法
10万
查看次数

find 命令中的运算符优先级?

见下面的例子:

$ ls -1p
appledir/
applefile
orangedir/
orangefile
$ find . -type f -name apple\*
./applefile
$ find . -type f -name orange\*
./orangefile
$ find . -type f -name apple\* -o -name orange\*
./applefile
./orangedir
./orangefile
$ find . -type f \( -name apple\* -o -name orange\* \)
./applefile
./orangefile
$ 
Run Code Online (Sandbox Code Playgroud)

我惊讶地发现我需要括号才能按预期工作;显然,我还没有内化find评估其论点的优先规则。

我如何轻松预测何时需要以及何时不需要使用括号来明确地对find初选进行分组?

换句话说,我可以想象在给它的命令中find 插入括号的规则是什么,这将使我能够准确预测它将如何评估未分组的表达式?

find

9
推荐指数
1
解决办法
1625
查看次数

标签 统计

find ×2