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

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

Разбор ls это Плохая Идея®, предпочитаю простой find в таком случае:

find . -type l -ls

Для обработки только текущего каталога:

find . -maxdepth 1 -type l -ls

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

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

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

ls -la /var/www/ | grep "\->"

grep это твой друг:

ls -lhaF | grep ^l   # list linksls -lhaF | grep ^d   # list directoriesls -lhaF | grep ^-   # list files

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

Позиционно:

find ! -name . -prune -type l

Это возвращает все символически связанные элементы (как dirs, так и 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. Откройте терминал и перейдите в этот каталог.

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

    ls -la

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

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

использование zsh

ls -l *(@)lrwxrwxrwx 1 david david 15 Nov 18 22:35 gvimrc -> /etc/vim/gvimrclrwxrwxrwx 1 david david 13 Nov 18 22:19 mydomains.php -> mydomains.php

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

b=$(find / -type l); for i in $(echo $b); do file $i ; done |grep -i broken 2> /dev/null

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

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