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 grep
avec 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 "\->"
L'analyse ls
est un mauvaise idée ® , préférez un simple find
dans ce cas:
find . -type l -ls
Pour traiter uniquement le répertoire actuel:
find . -maxdepth 1 -type l -ls
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 _ PERMISSION l
lors de la création d'indicateurs d'autorisation. 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$
Le pilote et le sous-système constituent un lien symbolique avec un autre répertoire.
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 des liens dans la colonne perms à la place de l
, utilisez d
pour les répertoires et -
pour les fichiers.
POSIXly:
find ! -name . -Prune -type l
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 la liste 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.
Tapez ls -lai
, il répertoriera tous les fichiers et sous-répertoires avec les numéros d'inode correspondants. Vous savez que les fichiers avec le même numéro d'inode sont les liens (durs ou logiciels) et cette solution fonctionne également pour les liens symboliques.
Peut être fait avec 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
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 lister les liens dans un seul répertoire, comme je l’ai montré ci-dessus.
Ceci renvoie tous les éléments liés symboliquement (les deux dirs & fns) dans un répertoire:
find . -maxdepth 1 -type l -print | cut -c3- | grep -v "\#"
Cependant, afin de distinguer les types d’éléments liés symboliquement:
ls -lhaF | grep ^l | grep -v "\#" | cut -c42- | grep -v "/" | cut -d' ' -f1
Renvoie uniquement les éléments de nom de fichier liés symboliquement. Et,
ls -lhaF | grep ^l | grep -v "\#" | cut -c42- | grep "/" | cut -d' ' -f1
Renvoie uniquement les éléments dirname liés symboliquement.