So listen Sie alle symbolischen Links in einem Verzeichnis auf


145

Ich habe einen symbolischen Link in meinem /var/www/Verzeichnis, der auf WordPress verweist. Wenn ich den Befehl ls -laaus dem /var/www/Verzeichnis ausführe, wird der Link zu WordPress nicht angezeigt. Gibt es eine Möglichkeit, alle symbolischen Links in einem Verzeichnis aufzulisten?


Antworten:


80

grepMit dem lsBefehl können Sie alle im aktuellen Verzeichnis vorhandenen symbolischen Links auflisten.

Dadurch werden alle im aktuellen Verzeichnis vorhandenen Links aufgelistet.

ls -la /var/www/ | grep "\->"

5
Es wird falsch positiv zurückgegeben, wenn Sie eine Datei haben, die " ->" enthält. Versuchen Sie es einfachtouch "foo->"
Sylvain Pineau

7
Bitte kopieren Sie den Inhalt einer anderen Antwort nicht und fügen Sie ihn nicht in Ihre eigene Antwort ein. -1
αғsнιη

3
Warum nicht grepmitmachen ^l?
Eliran Malka

3
Wie immer ist die beste Antwort die mit dem höchsten +
FractalSpace

Nett! → .bash_alias: alias listlinks='ls -l --color | grep "\->"'8-)
Frank Nocke

284

Parsing lsist eine schlechte Idee ® , bevorzugen Sie findin diesem Fall eine einfache :

find . -type l -ls

So verarbeiten Sie nur das aktuelle Verzeichnis:

find . -maxdepth 1 -type l -ls

Credits: Wie kann ich die Shell so konfigurieren, dass die von einem ls -A -Befehl zurückgegebenen Dateinamen erkannt werden und diese Namen Leerzeichen enthalten?


find: Unknown argument to -type: 1
Ahnbizcad

15
@ahnbizcad: Es ist nicht 1(eine), sondern l(Link)
Sylvain Pineau

3
Gute Antwort! Ich habe meinen so angepasst, dass er nicht den Verzeichnispfad herunterfährt: find /<your_directory> -maxdepth 1 -type l -ls 2>/dev/null Danke!
bgs

3
Nur für das aktuelle Verzeichnis (dh nicht rekursiv ) hinzufügen -maxdepth 1.
Joshua Pinter

1
@ cig0 Sie müssen nicht verwenden awk, und möchten wahrscheinlich nur dies:find . -maxdepth 1 -type l | sort -n
sobi3ch

10

Der ls -laBefehl zeigt alle Dateien und Ordner sowie das symbolisch verknüpfte Verzeichnis an. Wenn dieser Befehl kein symbolisches Verzeichnis anzeigt, bedeutet dies, dass Sie keinen symbolischen Link zu WordPress haben .

Sehen Sie das Ergebnis des Laufens ls -la:

kasiya@kasiya-pc:~$ cd /sys/devices/platform/sony-laptop
kasiya@kasiya-pc:/sys/devices/platform/sony-laptop$ ls -la
total 0
drwxr-xr-x  3 root root    0 Sep  9 19:57 .
drwxr-xr-x 14 root root    0 Sep 10  2014 ..
-r--r--r--  1 root root 4096 Sep  9 22:32 battery_care_health
-rw-r--r--  1 root root 4096 Sep  9 22:32 battery_care_limiter
lrwxrwxrwx  1 root root    0 Sep  9 19:57 driver -> ../../../bus/platform/drivers/sony-laptop
-r--r--r--  1 root root 4096 Sep  9 22:32 modalias
drwxr-xr-x  2 root root    0 Sep  9 22:32 power
lrwxrwxrwx  1 root root    0 Sep  9 22:32 subsystem -> ../../../bus/platform
-rw-r--r--  1 root root 4096 Sep  9 22:32 touchpad
-rw-r--r--  1 root root 4096 Sep  9 19:57 uevent

Sie werden sehen, dass alle symbolischen Verzeichnisse lbeim Aufrufen der Berechtigungsflags die Berechtigung haben. und wenn Sie ein grep mitnehmen ^l, können Sie nur symbolische Dateien oder Verzeichnisse auflisten :

kasiya@kasiya-pc:/sys/devices/platform/sony-laptop$ ls -la |grep ^l
lrwxrwxrwx 1 root root    0 Sep  9 19:57 driver -> ../../../bus/platform/drivers/sony-laptop
lrwxrwxrwx 1 root root    0 Sep  9 22:32 subsystem -> ../../../bus/platform
kasiya@kasiya-pc:/sys/devices/platform/sony-laptop$ 

Treiber- und Subsystemverzeichnis sind hier symbolische Verknüpfungen zu anderen Verzeichnissen.


1
Kleinere Angaben hier ... Das erste Zeichen der Berechtigungszeichenfolge ist eigentlich keine Berechtigung. Es ist der Dateityp. Wie Sie angegeben haben l, handelt es sich um einen symbolischen Link.
conner.xyz

5

grep ist dein Freund:

ls -lhaF | grep ^l   # list links
ls -lhaF | grep ^d   # list directories
ls -lhaF | grep ^-   # list files

Dies listet Zeilen auf, die mit "l" beginnen und Verknüpfungen in der Spalte "perms" anstelle der lVerwendung dfür Verzeichnisse und -für Dateien darstellen



1

So zeigen Sie die symbolischen Links in einem Verzeichnis an:

  1. Öffnen Sie ein Terminal und wechseln Sie in dieses Verzeichnis.

  2. Geben Sie den Befehl ein:

    ls -la
    

    Dadurch werden alle Dateien im Verzeichnis aufgelistet, auch wenn sie ausgeblendet sind.

  3. Die Dateien, die mit beginnen, lsind Ihre symbolischen Verknüpfungsdateien.


1
-1: Die Antwort von KasiyA deckt dies bereits ab.
muru

1

Dies gibt alle symbolisch verknüpften Elemente (sowohl dirs als auch fns) in einem Verzeichnis zurück:

find . -maxdepth 1 -type l -print | cut -c3- | grep -v "\#"

Um jedoch zwischen tatsächlichen symbolisch verknüpften Artikeltypen zu unterscheiden:

ls -lhaF | grep ^l | grep -v "\#" | cut -c42- | grep -v "/" | cut -d' ' -f1

Gibt nur symbolisch verknüpfte Dateinamenelemente zurück. Und,

ls -lhaF | grep ^l | grep -v "\#" | cut -c42- | grep "/" | cut -d' ' -f1

Gibt nur symbolisch verknüpfte Verzeichniseinträge zurück.


0

Typ ls -lai, es listet alle Dateien und Unterverzeichnisse mit entsprechenden inode numbers.You wissen Dateien mit gleichen Inode - Nummer sind die Links (hart oder weich) und diese Lösung funktioniert auch für die symbolischen Links.


ls -laizeigt nicht dieselbe Inode-Nummer für eine Datei und ihre symbolischen Verknüpfungen an. Im Gegensatz zu festen Links haben symbolische Links eigene Inode-Einträge. So sieht es aus.
Eliah Kagan

0

Kann auch mit Python gemacht werden:

$ python -c "import os,sys; print '\n'.join([os.path.join(sys.argv[1],i) for i in os.listdir(sys.argv[1]) if os.path.islink(os.path.join(sys.argv[1],i))])" /path/to/dir

Probelauf:

$ python -c "import os,sys; print '\n'.join([os.path.join(sys.argv[1],i) for i in os.listdir(sys.argv[1]) if os.path.islink(os.path.join(sys.argv[1],i))])" /etc
/etc/vtrgb
/etc/printcap
/etc/resolv.conf
/etc/os-release
/etc/mtab
/etc/localtime

Dies kann über die os.walkFunktion rekursiv erweitert werden , aber es reicht aus, eine einfache Listengenerierung zum Auflisten von Links in einem einzelnen Verzeichnis zu verwenden, wie oben gezeigt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.