Корень вашей проблемы в том, что вы сказали find переходить по символическим ссылкам. Это редко бывает хорошей идеей.
Вместо этого продолжайте работать с символическими ссылками и фильтруйте те, которые вам нужны.
Вы фильтруете файлы по их номерам inode, но это выглядит как ошибка: похоже, вы ищете файлы, которые совпадают с / tmp
, а не файлы с таким же индексом. номер как / tmp
. Ваша команда также находит файлы, которые имеют тот же индекс, что и / tmp
, но расположены в другой файловой системе.
Во многих оболочках (ksh, bash, zsh, dash) есть оператор -ef
для команды test
(также пишется […]
), которая проверяет являются ли два файла одинаковыми.
find / -path /media -prune -o -type l -exec ksh -c 'for x; do [ "$0" -ef "$x" ] && printf %s\\n "$x"; done' /tmp {} +
Вы также можете сделать это в zsh.
print -lr -- /^media/**/*(@e\''[[ $REPLY -ef /tmp ]]'\')