Comment lister tous les liens symboliques dans un répertoire

96

J'ai un lien symbolique dans mon répertoire /var/www/ qui lie à WordPress. Lorsque je lance la commande ls -la du répertoire /var/www/ , le lien vers WordPress ne s'affiche pas. Est-il possible de lister tous les liens symboliques qui se trouvent dans un répertoire?

    
posée wisaac407 09.09.2014 - 19:56
la source

8 réponses

57

Vous pouvez utiliser grep avec la commande ls pour répertorier tous les liens symboliques présents dans le répertoire en cours.

Ceci listera tous les liens présents dans le répertoire courant.

ls -la /var/www/ | grep "\->"
    
réponse donnée g_p 09.09.2014 - 20:02
la source
182

Analyser ls est une Mauvaise idée ® , préférez un simple find à cette cas:

find . -type l -ls

Pour traiter uniquement le répertoire en cours:

find . -maxdepth 1 -type l -ls

Crédits: Comment faire en sorte que le shell reconnaisse les noms de fichiers renvoyés par la commande 'ls -A' et que ces noms contiennent des espaces?

    
réponse donnée Sylvain Pineau 09.09.2014 - 20:21
la source
8

la commande ls -la affiche tous les fichiers et dossiers ainsi que le répertoire symbolique, si cette commande ne montre aucun répertoire symbolique, cela signifie que vous n'avez pas de lien symbolique vers WordPress .

voir le résultat de l'exécution de 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

Vous verrez que tout le répertoire symbolique a la permission l lors de la mise en place des indicateurs d'autorisation. et si vous prenez un grep avec ^l , vous ne pouvez lister que les fichiers symboliques ou le répertoire:

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$ 
Le répertoire

pilote et le sous-système sont des liens symboliques vers d’autres répertoires ici.

    
réponse donnée αғsнιη 09.09.2014 - 20:32
la source
3

POSIXly:

find ! -name . -prune -type l
    
réponse donnée cuonglm 09.09.2014 - 20:24
la source
3

grep est votre ami:

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

Cela listera les lignes commençant par "l" qui représentent des liens dans la colonne permanente à la place de l use d pour les répertoires et - pour les fichiers

    
réponse donnée Kalibur 08.10.2015 - 12:22
la source
0

Tapez ls -lai , il listera tous les fichiers et sous-répertoires avec les numéros d'inodes correspondants. Vous savez que les fichiers avec le même numéro d'inode sont les liens (hard ou soft) et cette solution fonctionne également pour les liens symboliques.

    
réponse donnée saptarshi nag 09.09.2014 - 20:18
la source
0

Pour afficher les liens symboliques dans un répertoire:

  1. Ouvrez un terminal et déplacez-vous vers ce répertoire.

  2. Tapez la commande:

    ls -la
    

    Cela listera tous les fichiers du répertoire même s'ils sont cachés.

  3. Les fichiers commençant par l sont vos fichiers de liens symboliques.

réponse donnée sandeep srivastav vaddiparthy 10.09.2014 - 07:43
la source
0

Peut aussi être fait avec python:

$ 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

Exemple d'exécution:

$ 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

Cela peut être étendu pour être récursif via la fonction os.walk , mais il suffit d'utiliser une simple génération de liste pour répertorier les liens dans un seul répertoire, comme je l'ai montré ci-dessus.

    
réponse donnée Sergiy Kolodyazhnyy 09.01.2017 - 12:15
la source

Lire d'autres questions sur les étiquettes