Как перечислить все символические ссылки в каталоге

81

У меня есть символическая ссылка в моем каталоге /var/www/ , который ссылается на WordPress. Когда я запускаю команду ls -la из каталога /var/www/ , ссылка на WordPress не отображается. Есть ли способ перечислить все символические ссылки, которые находятся в каталоге?

    
задан wisaac407 09.09.2014 в 17:56
источник

8 ответов

46

Вы можете использовать grep с командой ls , чтобы отобразить все символические ссылки, присутствующие в текущем каталоге.

Здесь перечислены все ссылки, присутствующие в текущем каталоге.

ls -la /var/www/ | grep "\->"
    
ответ дан g_p 09.09.2014 в 18:02
источник
155

Анализ ls является Плохая идея ® , предпочитайте простой find в этом случай:

find . -type l -ls

Чтобы обрабатывать только текущий каталог:

find . -maxdepth 1 -type l -ls

Кредиты: Как заставить оболочку распознавать имена файлов, возвращаемые командой 'ls -A', и эти имена содержат пробелы?     

ответ дан Sylvain Pineau 09.09.2014 в 18:21
7

команда ls -la показывает все файлы и папки, а также символическую связанную директорию, если эта команда не отображает символический каталог, значит, у вас нет символической ссылки на WordPress .

см. результат выполнения 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

Вы увидите, что все символические каталоги имеют разрешение l при прошивании флажков разрешений. и если вы берете grep с ^l , вы можете перечислить только символические файлы или каталог:

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$ 

драйвер и подсистема представляют собой символическую ссылку на другой каталог здесь.

    
ответ дан αғsнιη 09.09.2014 в 18:32
2

POSIXly:

find ! -name . -prune -type l
    
ответ дан cuonglm 09.09.2014 в 18:24
2

grep - ваш друг:

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

Здесь будут перечислены строки, начинающиеся с «l», которые представляют ссылки в столбце perms вместо l , используют d для каталогов и - для файлов

    
ответ дан Kalibur 08.10.2015 в 10:22
0

Введите ls -lai , он перечислит все файлы и подкаталоги с соответствующими номерами inode. Вы знаете, что файлы с таким же номером inode - это ссылки (жесткие или мягкие), и это решение также работает для символических ссылок.

    
ответ дан saptarshi nag 09.09.2014 в 18:18
0

Чтобы просмотреть символические ссылки в каталоге:

  1. Откройте терминал и перейдите в этот каталог.

  2. Введите команду:

    ls -la
    

    Это длинный список всех файлов в каталоге, даже если они скрыты.

  3. Файлы, начинающиеся с l , являются вашими символическими файлами ссылок.

ответ дан user3153983 10.09.2014 в 05:43
0

Можно также выполнить с помощью 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

Пример прогона:

$ 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

Это можно продолжить, чтобы быть рекурсивным с помощью функции os.walk , но достаточно использовать простое создание списка для перечисления ссылок в одном каталоге, как я показал выше.

    
ответ дан Sergiy Kolodyazhnyy 09.01.2017 в 11:15