Comment lister tous les liens symboliques d’un répertoire

J’ai un lien symbolique dans mon répertoire /var/www/ qui renvoie à WordPress. Lorsque j’exécute la commande ls -la partir du répertoire /var/www/ , le lien vers WordPress n’apparaît pas. Existe-t-il un moyen de répertorier tous les liens symboliques contenus dans un répertoire?

Vous pouvez utiliser la commande grep with 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 "\->" 

Analyser ls est une mauvaise idée ® , préférez une find simple dans ce cas:

 find . -type l -ls 

Pour traiter uniquement le répertoire actuel:

 find . -maxdepth 1 -type l -ls 

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

La commande ls -la affiche tous les fichiers et dossiers, ainsi que le répertoire lié symbolique. Si cette commande n’affiche 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 tous les répertoires symboliques ont la permission au début des drapeaux. et si vous prenez un grep avec ^l vous ne pouvez lister que les fichiers ou répertoires symboliques:

 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$ 

les répertoires driver et subsystem sont des liens symboliques vers d’autres répertoires ici.

POSIXly:

 find ! -name . -prune -type l 

grep est votre ami:

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

Ceci listera les lignes commençant par “l” qui représentent les liens dans la colonne perms à la place de l use d pour les répertoires et - pour les fichiers

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

Pour afficher les liens symboliques dans un répertoire:

  1. Ouvrez un terminal et accédez à ce répertoire.

  2. Tapez la commande:

     ls -la 

    Cela doit faire une liste longue de tous les fichiers du répertoire même s’ils sont cachés.

  3. Les fichiers qui commencent par l sont vos fichiers de liens symboliques.

Peut être fait avec du python aussi:

 $ 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 

Échantillon échantillon:

 $ 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 

Ceci 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 lister les liens dans un seul répertoire, comme je l’ai montré ci-dessus.