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

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

146
задан 2 September 2016 в 00:12

10 ответов

Можно использовать grep с ls команда для списка всех символьных ссылок, существующих в текущем каталоге.

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

ls -la /var/www/ | grep "\->"
82
ответ дан 22 November 2019 в 22:53

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

find . -type l -ls

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

find . -maxdepth 1 -type l -ls

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

292
ответ дан 22 November 2019 в 22:53

grep Ваш друг:

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

Это перечислит линии, начинающиеся с «l», которые представляют Связи в колонке перманента вместо l использование d для справочников и - для файлов

5
ответ дан 22 November 2019 в 22:53

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

0
ответ дан 22 November 2019 в 22:53

Просмотреть символьные ссылки в каталоге:

  1. Открывают терминал и перемещаются в тот каталог.

  2. Тип команда:

    ls -la
    

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

  3. файлы, которые запускаются с l, являются Вашими файлами символьной ссылки.

1
ответ дан 22 November 2019 в 22:53

Это возвращает все символически связанные объекты (оба директора & fns) в каталоге:

find . -maxdepth 1 -type l -print | cut -c3- | grep -v "\#"

Однако для различения фактические символически связанные типы изделия:

ls -lhaF | grep ^l | grep -v "\#" | cut -c42- | grep -v "/" | cut -d' ' -f1

Возвраты символически связали объекты имени файла только. И,

ls -lhaF | grep ^l | grep -v "\#" | cut -c42- | grep "/" | cut -d' ' -f1

Возвраты символически связанные dirname объекты только.

1
ответ дан 22 November 2019 в 22:53

POSIXly:

find ! -name . -prune -type l
3
ответ дан 22 November 2019 в 22:53

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$ 

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

10
ответ дан 22 November 2019 в 22:53

Может быть сделан с 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 функция, но достаточно использовать простое поколение списка для списка ссылок в единственном каталоге, когда я показал выше.

0
ответ дан 22 November 2019 в 22:53

Пожалуйста, найдите ниже одну команду скрипта liner bash для рекурсивного поиска всех неработающих символических ссылок в любой ОС на базе Linux

b=$(find / -type l); for i in $(echo $b); do file $i ; done |grep -i broken 2> /dev/null
0
ответ дан 28 January 2021 в 22:06

Другие вопросы по тегам:

Похожие вопросы: