
Estoy buscando archivos PDF en todos los directorios excepto aquellos .texpadtmp
por código originalmente basado enesta discusión.
function findpdfs() {
find . -iname '*.pdf' -not -path "*.texpadtmp*" | while read filename
do
echo -e "\033[34;1m// === PDF Document:\033[33;1m $filename\033[0m"
pdftotext -enc Latin1 "$filename" - | grep --color=always -i $1
time # TODO problem here!
done
}
donde, en la última línea, intento imprimir el tiempo de ejecución del script para cada archivo sin éxito.
¿Cómo se puede imprimir la hora correctamente?
Mi próximo objetivo es tener todos los tiempos de ejecución y presentarlos como porcentajes en el resultado como números enteros para poder aproximar a dónde van la mayoría de los recursos de tiempo.
Respuesta1
Método n.º 1: utilizar la hora de inicio/finalización
Normalmente lo verás hecho donde lo haces:
begin=$(date +%s)
... do something ...
end=$(date +%s)
Y luego resta el $begin
tiempo del $end
tiempo para obtener el número de segundos que han transcurrido.
tottime=$(expr $end - $begin)
Método #2 - Usar los comandos de tiempo
El otro método sería utilizar el time
comando integrado en Bash o time program that's included with most Linux/Unix systems here,
/bin/time`.
Puedes comprobarlo así:
$ type -a time
time is a shell keyword
time is /usr/bin/time
time is /bin/time
Lo usas así:
incorporado$ time sleep 5
real 0m5.004s
user 0m0.001s
sys 0m0.001s
ejecutable independiente
$ /bin/time sleep 5
0.00user 0.00system 0:05.00elapsed 0%CPU (0avgtext+0avgdata 628maxresident)k
0inputs+0outputs (0major+191minor)pagefaults 0swaps
Proporcionan diferentes resultados, pero puede utilizar el que mejor se adapte a sus necesidades. Ambos imprimirán el tiempo transcurrido que tarda en ejecutarse un comando:
$ time <cmd>
Entonces podrías anteponer tu pdf2text
comando.