【发布时间】:2014-09-09 16:26:57
【问题描述】:
如果之前已经介绍过,我深表歉意。我正在我的 OSX Mavericks 上学习 find。我不太确定我是否完全了解运算符。
我的文件夹有 4 个文件:
123.123
123.abc
abc.123
abc.abc
当我尝试“或”-o 运算符时:
find . \( -name "*.123" -o -name "123.*" \) -print
输出如预期:
./123.123
./123.abc
./abc.123
但是当我去掉括号/括号时,即:
find . -name "*.123" -o -name "123.*" -print
...只打印./123.abc。
为什么....???我真的不明白这里的计算机是如何解释命令的。
我的观察是./123.abc 适合第二个参数(123.*),但不适合第一个参数(*.123)。所以似乎不知何故,在不带括号的第二个参数之前使用-o 会导致第一个参数表现得好像它有一个“NOT”(!) 运算符。
【问题讨论】:
-
顺便说一下,如果你省略
-print就像find . -name "*.123" -o -name "123.*"一样,你会得到预期的输出(至少在 GNU 上)