187 votes

LINUX Liste de manière récursive tous les fichiers d'un répertoire, y compris ceux de répertoires symlink

Supposons que j'ai un répertoire /dir à l'intérieur de laquelle il y a 3 liens symboliques vers d'autres répertoires /dir/dir11, /dir/dir12, et /dir/dir13. Je veux la liste de tous les fichiers dans dir y compris ceux en dir11, dir12 et dir13.

Pour être plus générique, je veux la liste de tous les fichiers, y compris ceux dans les répertoires qui sont des liens symboliques. find ., ls -R, etc arrêter sur le lien sans avoir à naviguer dans leur liste.

283voto

Michael Ridley Points 5246

L'option -L sur ls accomplira ce que vous voulez. Il déréférence des liens symboliques.

Donc, votre commande serait:

 ls -LR
 

Vous pouvez également accomplir cela avec

 find -follow
 

L'option -follow indique à find de suivre les liens symboliques vers les répertoires.

126voto

Steve Baker Points 2220

Qu'en est-il des arbres ? tree -l suivra les liens symboliques.

Disclaimer : J'ai écrit ce paquet.

60voto

dvorak Points 9516
 find /dir -type f -follow -print
 

-type f signifie qu'il affichera de vrais fichiers (et non des liens symboliques)

-follow signifie qu'il suivra les liens symboliques de votre répertoire

-print provoquera l'affichage des noms de fichiers.

Si vous voulez un affichage de type ls, vous pouvez effectuer les opérations suivantes:

 find /dir -type f -follow -print|xargs ls -l
 

11voto

pjz Points 11925

Utilisation de ls:

   ls -LR
 

de 'homme ls':

    -L, --dereference
          when showing file information for a symbolic link, show informa‐
          tion  for  the file the link references rather than for the link
          itself
 

Ou, en utilisant find:

 find -L .
 

De la page de manuel find:

 -L     Follow symbolic links.
 

Si vous souhaitez suivre uniquement quelques liens symboliques (comme peut-être uniquement ceux de niveau supérieur que vous avez mentionnés), vous devriez regarder l'option -H, qui ne fait que suivre les liens symboliques que vous lui transmettez en ligne de commande.

5voto

Ashwin Muni Points 76

trouver -L / var / www / -type l

l'homme trouve

 -L     Follow  symbolic links.  When find examines or prints information about files, the information used shall be taken from the properties of
          the file to which the link points, not from the link itself (unless it is a broken symbolic link or find is unable to examine the file to
          which  the link points).  Use of this option implies -noleaf.  If you later use the -P option, -noleaf will still be in effect.  If -L is
          in effect and find discovers a symbolic link to a subdirectory during its search, the subdirectory pointed to by the symbolic  link  will
          be searched.
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X