Мне нужно получить содержимое папки в одной командной строке, прямо сейчас, если я использую 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\"\}/'
Кстати, запятую после "разыменования" поменял на двоеточие.