У меня есть символьная ссылка в моем /var/www/
каталог, который связывается с WordPress. Когда я выполняю команду ls -la
от /var/www/
каталог ссылка на WordPress не обнаруживается. Существует ли способ перечислить все символьные ссылки, которые находятся в каталоге?
Можно использовать grep
с ls
команда для списка всех символьных ссылок, существующих в текущем каталоге.
Это перечислит все ссылки, существующие в текущем каталоге.
ls -la /var/www/ | grep "\->"
Парсинг ls
Плохая Идея В® , предпочтите простое find
в этом случае:
find . -type l -ls
, Чтобы только обработать текущий каталог:
find . -maxdepth 1 -type l -ls
<глоток> Кредиты: , Как я делаю оболочку для распознавания имен файлов, возвращенных 'ls-A' команда и эти имена, содержат пробелы? глоток>
grep
Ваш друг:
ls -lhaF | grep ^l # list links
ls -lhaF | grep ^d # list directories
ls -lhaF | grep ^- # list files
Это перечислит линии, начинающиеся с «l», которые представляют Связи в колонке перманента вместо l
использование d
для справочников и -
для файлов
Тип ls -lai
, это перечислит все файлы и подкаталоги с соответствующими inode числами. Вы знаете, что файлы с тем же inode числом являются ссылками (твердый или мягкий), и это решение также работает на символьные ссылки.
Просмотреть символьные ссылки в каталоге:
Открывают терминал и перемещаются в тот каталог.
Тип команда:
ls -la
Это должно быть длинный список все файлы в каталоге, даже если они будут скрыты.
файлы, которые запускаются с l
, являются Вашими файлами символьной ссылки.
Это возвращает все символически связанные объекты (оба директора & 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 объекты только.
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$
драйвер и каталог подсистемы являются символьной ссылкой на другой каталог в здесь.
Может быть сделан с 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
функция, но достаточно использовать простое поколение списка для списка ссылок в единственном каталоге, когда я показал выше.
Пожалуйста, найдите ниже одну команду скрипта liner bash для рекурсивного поиска всех неработающих символических ссылок в любой ОС на базе Linux
b=$(find / -type l); for i in $(echo $b); do file $i ; done |grep -i broken 2> /dev/null