Назад | Перейти на главную страницу

Как узнать цель символьных ссылок в одной командной строке?

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

Я использую это;

stat -c '{"name": "%n", "size": "%s", "perms":"%a","type":"%F","user":"%U", "dereference","%N"}' /*;

Важный момент: мне нужен один лайнер и очень быстрый вывод. Я не мог обойти это с помощью ls, может быть, есть решение с использованием find, locate и т. Д. Или если вы знаете, как читать из mlocatedb?

Спасибо,

ls -l покажет вам цель ссылки. Это то, что вам нужно? Другой вариант - readlink <file>.

Упс, извините, не все там прочитал. Как насчет ls -lL. В -L говорит ls разыменовать ссылку, чтобы вы увидели там цель вместо ссылки.

stat также знает вариант -L для разыменования символических ссылок. Попробуйте свои звонки с этим параметром.

Попробуйте это, добавив еще одно поле:

stat -c '{L"name": "%n", "size": "%s", "perms":"%a","type":"%F","user":"%U", "dereference":"%N"}' /* | 
    sed '/\/\o47\"\}$/ {s/\}/,\"dir\":\"yes\"\}/;b}; s/\}$/,\"dir\":\"no\"\}/'

Кстати, запятую после "разыменования" поменял на двоеточие.