Você pode usar a E / S canalizada de um comando em awk (pelo menos gawk , eu não testei isso no Solaris):
find . -type f | xargs ls -l | awk 'BEGIN { OFS="\t" } { command=sprintf("file \"%s\"", $9); command | getline type; close(command); print type, $3, $4 }' | tr ":" "\t"
Se o seu find oferecer suporte, você poderá simplificar isso com
find . -type f -ls | awk ...
Há um recurso útil sobre o uso de getline , que abrange várias advertências (incluindo a não utilização de close() como eu tinha inicialmente).