it-swarm.com.de

LINUX Listet alle Dateien in einem Verzeichnis rekursiv auf, einschließlich Dateien in Symlink-Verzeichnissen

Angenommen, ich habe ein Verzeichnis /dir, in dem sich 3 symbolische Links zu anderen Verzeichnissen befinden /dir/dir11, /dir/dir12 und /dir/dir13. Ich möchte alle Dateien in dir auflisten, einschließlich der Dateien in dir11, dir12 und dir13.

Um generischer zu sein, möchte ich alle Dateien auflisten, einschließlich der Dateien in den Verzeichnissen, die Symlinks sind. find ., ls -R usw. stoppen Sie am Symlink, ohne in diese zu navigieren, um sie weiter aufzulisten.

118
CuriousDawg

Die -L-Option für ls erfüllt, was Sie möchten. Es dereferenziert symbolische Links.

Ihr Befehl wäre also:

ls -LR

Sie können dies auch mit erreichen

find -follow

Die Option -follow weist find an, symbolischen Links zu Verzeichnissen zu folgen.

Unter Mac OS X verwenden

find -L

as -follow ist veraltet.

187
Michael Ridley

Wie wäre es mit tree ? tree -l folgt symbolischen Links.

Disclaimer: Ich habe dieses Paket geschrieben.

107
Steve Baker
find /dir -type f -follow -print

-type f bedeutet, dass echte Dateien angezeigt werden (keine Symlinks)

-follow bedeutet, dass es den Symlinks Ihres Verzeichnisses folgt

-print bewirkt, dass die Dateinamen angezeigt werden.

Wenn Sie einen ls-Typ anzeigen möchten, können Sie Folgendes tun

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

Ls verwenden:

  ls -LR

von 'man 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

Oder mit find:

find -L .

Aus der Find-Manpage:

-L     Follow symbolic links.

Wenn Sie nur einem wenigen symbolischen Links folgen möchten (wie vielleicht nur den Toplevel-Links), sollten Sie sich die Option -H ansehen, die nur den symbolischen Links folgt, die Sie in der Befehlszeile übergeben.

8
pjz
find -L /var/www/ -type l

# man find
-L     Follow  symbolic links.  When find examines or prints information about files, the information used shall be taken from the

eigentum von die Datei, auf die der Link verweist, und nicht auf den Link selbst (es sei denn, es handelt sich um einen defekten symbolischen Link oder find. Die Verwendung dieser Option impliziert -noleaf. Wenn Sie später die Option -P verwenden, bleibt -noleaf weiterhin in Kraft. Wenn -L ist in effect und find entdeckt während der Suche einen symbolischen Link zu einem Unterverzeichnis, auf das das .__ verweist. symbolischer Link wird gesucht werden.

5
Ashwin Muni

Ich wusste, dass tree geeignet war, aber ich hatte keinen Baum installiert. Also, ich habe eine ziemlich nahe Alternative hier

find ./ | sed -e 's/[^-][^\/]*\//--/g;s/--/ |-/'
3
divinedragon
ls -R -L

-L dereferences symbolische Links. Dies macht es auch unmöglich, Symlinks zu Dateien zu sehen - sie sehen aus wie die Datei, auf die verwiesen wird.

2
Branan

falls Sie alle Dateien Inhalte : find . -type f -exec cat {} + ausdrucken möchten

0
ItsmeJulian