如何使用 GNU find 命令一次匹配多种文件类型(一个搜索命令)?
手册页说:
-type c
File is of type c:
b block (buffered) special
c character (unbuffered) special
d directory
p named pipe (FIFO)
f regular file
l symbolic link; this is never true if the -L option or the -follow
option is in effect, unless the symbolic link is broken. If
you want to search for symbolic links when -L is in effect, use
-xtype.
s socket
D door (Solaris)
我想搜索文件 ( f
) 和符号链接 ( l
) 并将其通过管道传输到另一个进程。如何同时搜索两者?
我努力了
find -type fl | …
find -type f -type l | …
find -xtype f -type l | …
我知道解决方法是使用子 shell
(find -type f; find -type l) | …
但我只是想知道如果有可能的。
答案1
您可以使用 find 进行分组和使用逻辑运算符,但必须转义括号,以便查找所有文件和链接,例如
find \( -type f -o -type l \) <other filters>
因此,如果您想要名称以 t 开头的所有文件和链接,您可以这样做
find \( -type f -o -type l \) -name 't*'
如果您想对事物进行分组并与其他运算符组合,则只需要括号,因此如果您没有其他搜索条件,则可以省略它们
答案2
尝试这个:
find -type f -o -type l
答案3
-a
您可以使用(for and
) 或-o
(for )组合谓词or
。所以,你可以输入
find /path -type f -o -type l