Como ls e conhecer o destino dos links simbólicos em uma linha de comando?

2

Eu preciso pegar o conteúdo da pasta em uma linha de comando, agora se eu fizer stat ou ls, ele me diz que o tipo de arquivo é Symbolic Link, mas não me diz se é um arquivo ou uma pasta.

Estou usando isso;

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

O ponto importante é que eu preciso de um forro e uma saída muito rápida. Eu não poderia contornar isso fazendo ls, talvez haja uma solução usando find, locate etc. Ou se vc sabe ler do mlocatedb?

Obrigado,

    
por Devrim 11.01.2010 / 19:53

3 respostas

1

Tente isso, o que adiciona outro campo:

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

A propósito, eu mudei a vírgula após "desreferência" para dois pontos.

    
por 11.01.2010 / 20:46
4

stat também conhece a opção -L para remover referência de links simbólicos. Tente suas chamadas com este parâmetro.

    
por 11.01.2010 / 20:40
3

ls -l mostrará o alvo de um link. É aquilo que você precisa? Outra opção é readlink <file> .

Ops, desculpe, não li tudo lá. Como cerca de ls -lL . O -L diz ao ls para cancelar a referência ao link, então você verá o destino lá em vez do link.

    
por 11.01.2010 / 19:56

Tags