
Estou pesquisando arquivos PDF em todos os diretórios, exceto aqueles .texpadtmp
por código originalmente baseado emesta discussão.
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
}
onde, na última linha, tento imprimir o tempo de execução do script para cada arquivo sem sucesso.
Como você pode imprimir a hora corretamente?
Meu próximo objetivo é ter todos os tempos de execução e apresentá-los como porcentagens na saída como números inteiros para que eu possa aproximar para onde está indo a maior parte dos recursos de tempo.
Responder1
Método #1 – Usando horário de início/término
Você normalmente verá isso feito onde você faz:
begin=$(date +%s)
... do something ...
end=$(date +%s)
E então subtraia o $begin
tempo do $end
tempo para obter o número de segundos que se passaram.
tottime=$(expr $end - $begin)
Método #2 – Usando os comandos de tempo
O outro método seria usar o time
comando embutido no Bash ou time program that's included with most Linux/Unix systems here,
/bin/time`.
Você pode verificar assim:
$ type -a time
time is a shell keyword
time is /usr/bin/time
time is /bin/time
Você usa assim:
construídas em$ time sleep 5
real 0m5.004s
user 0m0.001s
sys 0m0.001s
executável independente
$ /bin/time sleep 5
0.00user 0.00system 0:05.00elapsed 0%CPU (0avgtext+0avgdata 628maxresident)k
0inputs+0outputs (0major+191minor)pagefaults 0swaps
Eles fornecem resultados diferentes, mas você pode usar o que melhor atender às suas necessidades. Ambos imprimirão o tempo decorrido que um comando leva para ser executado:
$ time <cmd>
Então você pode prefixar seu pdf2text
comando.