A manpage do GNU find diz que todos os achados do POSIX devem detectar loops do sistema de arquivos e emitir mensagens de erro nesses casos, e eu testei
find . -follow -printf ""
no GNU find, que conseguiu encontrar loops no formato ./a -> ./b
e ./b -> ./a
imprimindo o erro
find: './a': Too many levels of symbolic links
find: './b': Too many levels of symbolic links
(isso também funcionou em a->b->c->a
)
Da mesma forma, os loops no formato ./foo/x -> ..
e ./foo/a -> ./bar
+ ./bar/b -> ./foo
imprimiram os erros
find: File system loop detected; './foo/a/b' is part of the same file system loop as './foo'.
find: File system loop detected; './bar/b/a' is part of the same file system loop as './bar'.
find: File system loop detected; './foo/x' is part of the same file system loop as '.'.
Se você quisesse fazer algo com a saída diferente de lê-la, seria necessário redirecioná-la de stderr para stdout e canalizá-la para algum script que possa analisar as mensagens de erro.