How to find files excluding symbolic links?

前端 未结 6 1365
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-02-02 05:14

I want to find files in Linux that follow a certain pattern but I am not interested in symbolic links.

There doesn\'t seem to be an option to the find comm

相关标签:
6条回答
  • 2021-02-02 05:26

    Check the man page again ;) It's:

    find /path/to/files -type f
    

    type f searches for regular files only - excluding symbolic links.

    0 讨论(0)
  • 2021-02-02 05:34

    Do you want it to follow symlinks but not return them (if they match your pattern)?

    find -H?

    man find
         ...
         -H      Cause the file information and file type (see stat(2)) returned for each symbolic link specified on the command line to be those of
                 the file referenced by the link, not the link itself.  If the referenced file does not exist, the file information and type will be
                 for the link itself.  File information of all symbolic links not on the command line is that of the link itself.
    
         -L      Cause the file information and file type (see stat(2)) returned for each symbolic link to be those of the file referenced by the
                 link, not the link itself.  If the referenced file does not exist, the file information and type will be for the link itself.
    
                 This option is equivalent to the deprecated -follow primary.
    
    0 讨论(0)
  • 2021-02-02 05:43

    I have readed the MAN and now it seems is -P also, using -type r would raise an error. also notice is the DEFAULT behavior now.

    -P Never follow symbolic links. This is the default behaviour. When find examines or prints information a file, and the file is a symbolic link, the information used shall be taken from the properties of the symbolic link itself.

    0 讨论(0)
  • Like @AquariusPower say, the use of find -type f -xtype f solved my problem, and now I get only real files and not symbolic links anymore.

    From: https://linux.die.net/man/1/find

    I got:

    -xtype c The same as -type unless the file is a symbolic link. For symbolic links: if the -H or -P option was specified, true if the file is a link to a file of type c; if the -L option has been given, true if c is 'l'. In other words, for symbolic links, -xtype checks the type of the file that -type does not check.

    Thanks.

    0 讨论(0)
  • 2021-02-02 05:45

    This works for me:

    find -H . -maxdepth 1 -type f
    

    Actually, don't really need the -H

    0 讨论(0)
  • 2021-02-02 05:50
    ! -type l
    

    For example, if you want to search all regular files in /usr/bin, excluding symlink:

    find /usr/bin/ \! -type l
    
    0 讨论(0)
提交回复
热议问题