Как найти всю символическую ссылку в PWD, которая ссылается на файлы за пределами PWD?unix
Вопрос
Я могу найти всю ссылку в 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
. Не связан с StackOverflow