从脚本打印脚本的执行时间?

从脚本打印脚本的执行时间?

.texpadtmp我正在所有目录中搜索 PDF 文件,除了最初基于代码的目录中的 PDF 文件这次讨论

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 - 使用时间命令

另一种方法是使用timeBash 或 /bin/time 中内置的命令time program that's included with most Linux/Unix systems here,

你可以这样检查:

$ 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命令添加前缀。

相关内容