#! /bin/bash #count files under subtree. touch /tmp/t$$ find $1 -type f -exec echo "1" >> /tmp/t$$ \; # el ; final va con \ para evitar # que sea interpretado por el shell # en este caso corresponde al # delimitador del comando exec de finger wc -l /tmp/t$$ rm /tmp/t$$ # UN alumno pregunto si podiamos incrementar un contador en lugar del echo. # Esto no es posible, pues exec solo ejecuta comandos externos al shell. # Luego no es posible hacer cosas del tipo let i+=1 en lugar de echo, pues # let es un comando interno al shell. # En la implementacion de find, exec crea un proceso hijo y en este ejecuta # el comando que se haya sen~alado, por esto no es posible ejecutar # comandos internos al shell. Notar que echo existe como comando interno y # como comando externo. Mas adelante veremos los procesos hijos y # como ejecutar programas o camandos en ellos. # Mas simple se puedo usar: # find $1 -type f -print | wc -l