Como listar todos os links simbólicos em um diretório

90

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?

    
por wisaac407 09.09.2014 / 19:56
fonte

8 respostas

53

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 "\->"
    
por g_p 09.09.2014 / 20:02
fonte
173

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

Créditos: Como faço para o shell reconhecer os nomes de arquivos retornados por um comando 'ls -A' e esses nomes contêm espaços?

    
por Sylvain Pineau 09.09.2014 / 20:21
fonte
7

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.

    
por αғsнιη 09.09.2014 / 20:32
fonte
3

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

    
por Kalibur 08.10.2015 / 12:22
fonte
2

POSIXly:

find ! -name . -prune -type l
    
por cuonglm 09.09.2014 / 20:24
fonte
0

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.

    
por saptarshi nag 09.09.2014 / 20:18
fonte
0

Para visualizar os links simbólicos em um diretório:

  1. Abra um terminal e vá para esse diretório.

  2. Digite o comando:

    ls -la
    

    Isso deve listar todos os arquivos no diretório, mesmo que estejam ocultos.

  3. Os arquivos que começam com l são seus arquivos de link simbólico.

por sandeep srivastav vaddiparthy 10.09.2014 / 07:43
fonte
0

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.

    
por Sergiy Kolodyazhnyy 09.01.2017 / 12:15
fonte