O comportamento do Solaris é buggy. -mount
aka -xdev
não significa que os links simbólicos que apontam para fora do sistema de arquivos inicial devem ser excluídos: esse comportamento nem é descrito na Documentação do Solaris e outras implementações não fazem isso. O que -xdev
significa é que quando find
chega a um ponto de montagem em sua passagem de diretório recursiva, ele pula completamente o ponto de montagem.
Não acho que haja uma maneira fácil de filtrar find
correspondências pelo dispositivo que contém o destino de um link simbólico. Aqui está um método que se baseia no utilitário stat
no Linux (não funciona no Solaris). / p>
find /some/path -xdev \( ! -type l -o -exec sh -c '[ "$0" = "$(stat -L -fc %t "$1")" ]' "$(stat -fc %t /some/path)" {} \; \) -print
Ou seja. imprima tudo que não seja um link simbólico e, para links simbólicos, imprima apenas se o número do sistema de arquivos do destino corresponder ao número do sistema de arquivos do ponto inicial. Os links simbólicos pendentes são excluídos e acionam uma mensagem de erro; adicione -o -xtype l
após ! -type l
para incluí-los e adicione -xtype l -o
após -xdev
para excluí-los silenciosamente.