Angenommen, ich habe ein Verzeichnis /dir
, in dem es 3 Symlinks zu anderen Verzeichnissen gibt
/dir/dir11
, /dir/dir12
, und /dir/dir13
. Ich möchte alle Dateien in dir
auflisten, einschließlich derer in dir11
, dir12
und dir13
.
Um allgemeiner zu sein, möchte ich alle Dateien auflisten, einschließlich derer in den Verzeichnissen, die Symlinks sind. find .
, ls -R
, etc. stoppen bei den Symlinks, ohne in sie hinein zu navigieren, um sie weiter aufzulisten.
Die Option -L
für ls
erreicht, was Sie wollen. Sie dereferenziert symbolische Links.
Ihr Befehl würde also lauten:
ls -LR
Sie können dies auch erreichen mit
find -follow
Die Option -follow
weist find an, symbolischen Links zu Verzeichnissen zu folgen.
Unter Mac OS X verwenden Sie
find -L
da -follow
veraltet ist.
find /dir -type f -follow -print
-type f
bedeutet, dass echte Dateien angezeigt werden (keine Symlinks)
-follow
bedeutet, dass es Ihren Verzeichnis-Symlinks folgt
-print
bedeutet, dass die Dateinamen angezeigt werden.
Wenn Sie eine ls-artige Anzeige wünschen, können Sie folgendes tun
find /dir -type f -follow -print|xargs ls -l
Mit ls:
ls -LR
aus '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 einigen symbolischen Links folgen wollen (z.B. nur den von Ihnen erwähnten Toplevel-Links), sollten Sie sich die Option -H ansehen, die nur den Symlinks folgt, die Sie ihr auf der Kommandozeile übergeben.