Как найти файлы, исключая символические ссылки?

Я хочу найти файлы в Linux, которые следуют определенному шаблону, но меня не интересуют символические ссылки.

Кажется, что нет опции для для этого.

Как мне поступить ?

6 ответов


Регистрация man page снова ;) это:

find /path/to/files -type f

type f поиск только обычных файлов-исключая символические ссылки.


! -type l

например, если вы хотите искать все обычные файлы в /usr / bin, исключая символическую ссылку:

find /usr/bin/ \! -type l

вы хотите, чтобы следовать символическим ссылкам, но не возвращать их (если они соответствуют вашему шаблону)?

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.

Я прочитал человека, и теперь кажется, что это -P кроме того, использование-type r вызовет ошибку. также обратите внимание на поведение по умолчанию.

- P никогда не следуйте символическим ссылкам. Это по умолчанию поведение. Когда find проверяет или печатает информация файл, и файл является символической ссылкой, используемая информация должна быть взята из свойства самой символической ссылки.


Как @AquariusPower говорят, использование find -type f -xtype f решил мою проблему, и теперь я получаю только реальные файлы, а не символические ссылки.

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

Я:

- xtype c То же, что и-type, если файл не является символической ссылкой. Для символьных ссылок: если был указан параметр-H или-P, true, если файл ссылка на файл типа c; если была задана опция-L, true, если c это "Л". В другими словами, для символических ссылок, -xtype проверяет типа файл этого типа не проверяется.

спасибо.


это работает для меня:

find -H . -maxdepth 1 -type f

на самом деле, на самом деле не нужно-H