Как найти всю символическую ссылку в PWD, которая ссылается на файлы за пределами PWD?unix

StackOverflow https://stackoverflow.com/questions/9446571

  •  12-11-2019
  •  | 
  •  

Вопрос

Я могу найти всю ссылку в dir command:

find . -type l
.

Но мне нужна ссылка, которая ссылается только на файлы за пределами PWD. Кто-нибудь может сказать, как это сделать? Спасибо.

Это было полезно?

Решение

Я бы сделал что-то вроде:

find . -type l -exec readlink -f '{}' \; | grep -v "^`readlink -f ${PWD}`"
.

readlink -f дает вам канонический путь файла, поэтому первая команда дает вам путь ссылок, а команда grep исключает файлы, начинающиеся с текущего пути.

Если вы хотите запомнить, какие ссылки указывали на эти пути, вот способ сделать это:

find . -type l -exec sh -c 'echo $(readlink -f "{}") "<-- {}"' \; \
  | grep -v "^$(readlink -f ${PWD})"
.

Переключатель -exec более сложный, поскольку вы должны отображать как связанный путь, так и путь SymLink.

Другие советы

ich будет делать что-то вроде:

for link in `find . -type l`; do X=$(dirname `readlink $link`); if [ $X != '.' ]; then echo $link; fi ; done
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top