web-dev-qa-db-fra.com

Comment trouver des fichiers hors liens symboliques?

Je veux trouver des fichiers sous Linux qui suivent un certain modèle mais je ne suis pas intéressé par les liens symboliques. 

Il ne semble pas y avoir d’option dans la commande find pour cela. 

Comment vais-je faire? 

53
Barth

Vérifiez à nouveau la man page ;

find /path/to/files -type f

type f recherche uniquement les fichiers normaux - à l'exclusion des liens symboliques. 

61
hek2mgl
! -type l

Par exemple, si vous souhaitez rechercher tous les fichiers normaux dans/usr/bin, à l’exclusion du lien symbolique:

find /usr/bin/ \! -type l
14
Vittorio Milazzo

J'ai lu le MAN et maintenant, il semble que -P De plus, utiliser -type r soulèverait une erreur .

-P Ne suivez jamais les liens symboliques. C'est le comportement default . Quand trouve examine ou imprime information un fichier, et le fichier est un lien symbolique, les informations utilisées doivent être extraites de les propriétés du lien symbolique lui-même.

2
Nande

Voulez-vous qu'il suive les liens symboliques sans les renvoyer (s'ils correspondent à votre modèle)?

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.
2
ron rothman

Comme @AquariusPower, l'utilisation de find -type f -xtype f.__ a résolu mon problème, et maintenant je n'ai plus que des fichiers réels et non des liens symboliques.

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

J'ai eu:

-xtype c Identique à -type sauf si le fichier est un lien symbolique. Pour les liens symboliques: si l'option -H ou -P a été spécifiée, true si le fichier est un fichier lien vers un fichier de type c; si l'option -L a été donnée, true si c est 'l'. En d'autres termes, pour les liens symboliques, -xtype vérifie le type de le fichier que -type ne vérifie pas.

Merci.

0
Wellington1993

Cela fonctionne pour moi:

find -H . -maxdepth 1 -type f

En fait, pas vraiment besoin de -H

0
Joyce M