-print
是默认操作。一些find
谓词被认为是与过滤条件或条件相反的动作。例如,不是动作。是动作,即使它也可以用作条件。-type f
-exec
采取的行动包括-print
,-exec
和-ok
。一些find
实现具有其他非标准动作谓词像-print0
,-printf
,-execdir
,-okdir
,-ls
...
find files <some-predicates>
其中任何<some-predicates>
包含动作均不等同于:
find files \( <some-predicates> \) -print
(请注意,如果有一些-o
运算符,则上面的括号很重要)。
如有疑问,最好是-print
显式使用(或-exec printf '%s\0' {} +
(或-print0
在可用的地方)使用,以便可以对输出进行后处理)。
默认-print
操作由POSIX指定。一些旧的find
实现需要一个显式的实现-print
,但是如今通常在野外找不到这些实现。
还要注意,某些find
实现允许省略files
,在这种情况下,它们默认情况下是搜索当前目录。对他们来说
find
相当于
find .
find . -print
但是,这不是标准的,因此最好避免。
在更为冗长(有用)的一端,某些find
实现还允许将文件路径作为参数传递给-f
选项,例如:
find -f "$file1" -f "$file2" -print
它们是唯一find
允许将任意文件路径传递到的实现find
。其他实现不能接受诸如!
或-print
...之类的文件路径,因此find "$file" -print
(甚至find -- "$file" -print
)假定$file
不是find
谓词的名称(或第一种情况下的选项)。
不幸的是,这也不是标准的,也不是便携式的。