O padrão find
não pode imprimir nenhuma informação sobre os arquivos encontrados por si mesmos, exceto os caminhos completos. No entanto, algumas implementações de find
têm extensões para isso.
Por exemplo, com o GNU find
(como encontrado na maioria das distribuições GNU / Linux genéricas / tradicionais):
find ~ -type l -printf '%p -> %l\n'
Irá imprimir os links simbólicos no formato que você está pedindo, para os links simbólicos encontrados recursivamente (fazendo uma travessia física , que não segue os links simbólicos para os diretórios) em seu diretório pessoal. Algumas implementações find
também têm um predicado -ls
para produzir em um formato semelhante a ls -li
, do qual você pode extrair as informações.
Se você quisesse fazer uma travessia lógica (seguir links simbólicos para diretórios) e imprimir essa informação, você não poderia fazer isso com uma única invocação find
(mesmo com GNU find
) , mas você pode usar o globbing de zsh
para percorrer os diretórios e usar o GNU find
apenas para imprimir as informações:
find ~/***/*(D@) -printf '%p -> %l\n'
Ou com qualquer shell e GNU find
(mas várias invocações):
find -L ~ -xtype l -exec sh -c '
exec find "$@" -printf "%p -> %l\n"' sh {} +
Para encontrar os links simbólicos que eventualmente apontam para algum arquivo existente em ~/bin/config
(assumindo que nenhum dos componentes de ~/bin/config
são links próprios), ainda com zsh
:
find ~/**/*(D@e{'[[ $REPLY:A = ~/bin/config/* ]]'}) -printf '%p -> %l\n'