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).