Como encontrar todos os links simbólicos no PWD que se referem a arquivos fora do PWD?unix
Pergunta
posso encontrar todos os links no diretório por comando:
find . -type l
Mas preciso de um link que se refira apenas a arquivos fora do PWD.Alguém pode dizer como fazer isso?Obrigado.
Solução
Eu faria algo como:
find . -type l -exec readlink -f '{}' \; | grep -v "^`readlink -f ${PWD}`"
readlink -f
fornece o caminho canônico de um arquivo, então o primeiro comando fornece o caminho dos links e o grep
O comando exclui arquivos que começam com o caminho atual.
Se você quiser lembrar quais links apontavam para esses caminhos, veja uma maneira de fazer isso:
find . -type l -exec sh -c 'echo $(readlink -f "{}") "<-- {}"' \; \
| grep -v "^$(readlink -f ${PWD})"
o -exec
switch é mais complicado, pois você precisa exibir o caminho vinculado e o caminho do link simbólico.
Outras dicas
Eu faria algo como:
for link in `find . -type l`; do X=$(dirname `readlink $link`); if [ $X != '.' ]; then echo $link; fi ; done
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow