如何使用 GNU find 一次搜索多种文件类型?

如何使用 GNU find 一次搜索多种文件类型?

如何使用 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

相关内容