
Я ищу PDF-файлы во всех каталогах, за исключением тех, которые .texpadtmp
изначально основаны на кодеэто обсуждение.
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
}
где в последней строке я пытаюсь вывести время выполнения скрипта для каждого файла, но безуспешно.
Как правильно напечатать время?
Моя следующая цель — получить все значения времени выполнения и представить их в виде процентов в выходных данных в виде целых чисел, чтобы я мог приблизительно оценить, куда уходит большая часть временных ресурсов.
решение1
Метод №1 — Использование времени начала/окончания
Обычно вы увидите это там, где это делаете вы:
begin=$(date +%s)
... do something ...
end=$(date +%s)
А затем вычтите $begin
время из $end
времени, чтобы получить количество прошедших секунд.
tottime=$(expr $end - $begin)
Метод №2 — Использование команд времени
Другой метод — использовать time
команду, встроенную в Bash, или time program that's included with most Linux/Unix systems here,
/bin/time`.
Проверить можно так:
$ type -a time
time is a shell keyword
time is /usr/bin/time
time is /bin/time
Вы используете его так:
встроенный$ time sleep 5
real 0m5.004s
user 0m0.001s
sys 0m0.001s
автономный исполняемый файл
$ /bin/time sleep 5
0.00user 0.00system 0:05.00elapsed 0%CPU (0avgtext+0avgdata 628maxresident)k
0inputs+0outputs (0major+191minor)pagefaults 0swaps
Они предоставляют разные выходы, но вы можете использовать тот, который соответствует вашим потребностям. Оба выведут истекшее время, которое требуется команде для выполнения:
$ time <cmd>
Таким образом, вы можете добавить префикс к своей pdf2text
команде.