1
find /starting/path -type d ! -user root -exec find {} -maxdepth 1 -user root \;
Para todos os diretórios que não são de propriedade do root, um find
separado é executado, listando os filhos diretos de propriedade do root.
2
find /starting/path -user root -execdir sh -c 'test 'stat -c %U ./' != root' \; -print
Para cada arquivo possuído pelo root, um shell separado é executado, o que testa se o diretório pai não é de propriedade do root.
Os dois comandos têm desempenho diferente. O primeiro cria um processo filho para cada diretório não pertencente ao root. O segundo comando cria dois processos para cada arquivo de propriedade do root. Se você espera relativamente poucos diretórios e muitos desses arquivos, use (1). Se você espera muitos desses diretórios e poucos desses arquivos, use (2) talvez.
Em geral, você geralmente tem mais arquivos que diretórios, então você deve preferir (1).