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:
Ouvrez un terminal et accédez à ce répertoire.
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.
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.