Você pode usar o comando grep
with ls
para listar todos os links simbólicos presentes no diretório atual.
Isso listará todos os links presentes no diretório atual.
ls -la /var/www/ | grep "\->"
Eu tenho um link simbólico no meu diretório /var/www/
que vincula ao WordPress. Quando executo o comando ls -la
do diretório /var/www/
, o link para o WordPress não aparece. Existe uma maneira de listar todos os links simbólicos que estão em um diretório?
Você pode usar o comando grep
with ls
para listar todos os links simbólicos presentes no diretório atual.
Isso listará todos os links presentes no diretório atual.
ls -la /var/www/ | grep "\->"
Analisar ls
é uma Idéia ruim ® , prefira um simples find
nesse caso:
find . -type l -ls
Para processar apenas o diretório atual:
find . -maxdepth 1 -type l -ls
o comando ls -la
mostra todos os arquivos e pastas e também o diretório simbólico vinculado, se este comando não mostrar nenhum diretório simbólico, significa que você não tem um link simbólico para o WordPress .
veja o resultado da execução 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
Você verá todos os diretórios simbólicos com l
permissão no início dos sinalizadores de permissões. e se você pegar um grep com ^l
você pode listar apenas arquivos simbólicos ou diretório:
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$
O diretório driver e subsystem é um link simbólico para outro diretório aqui.
grep
é seu amigo:
ls -lhaF | grep ^l # list links
ls -lhaF | grep ^d # list directories
ls -lhaF | grep ^- # list files
Isso listará as linhas que começam com "l", que representam os Links na coluna de permanentes no lugar de l
use d
para diretórios e -
para arquivos
POSIXly:
find ! -name . -prune -type l
Digite ls -lai
, ele listará todos os arquivos e subdiretórios com os números de inode correspondentes.Você sabe que os arquivos com o mesmo número de inode são os links (hard ou soft) e esta solução também funciona para os links simbólicos.
Para visualizar os links simbólicos em um diretório:
Abra um terminal e vá para esse diretório.
Digite o comando:
ls -la
Isso deve listar todos os arquivos no diretório, mesmo que estejam ocultos.
Os arquivos que começam com l
são seus arquivos de link simbólico.
Também pode ser feito com o 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
Execução da amostra:
$ 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
Isso pode ser estendido para ser recursivo via função os.walk
, mas é suficiente usar a geração de lista simples para listar links em um único diretório, como mostrado acima.
Tags command-line symbolic-link ls find