从/ usr / bin / time格式化输出以忽略秒的部分

我想测量一个命令的运行时间,无论花费多less时间,它都能显示出来。

例如,

/usr/bin/time -f "%E (real)" SOMECOMMAND 

可能会返回4:36:05长时间运行的进程,或者7:27.32为短时间进程。

在第二种情况下,我怎样才能将它的格式设置为7:2700:07:27 (前导零不重要),因此一眼就可以看出它是7分钟(而不是我最初认为的7小时)?

秒的分数是没有必要的我的测量。

如果你使用Bash,你可以使用内置的time命令。 它输出“米”分钟和“秒”秒而不是模棱两可的冒号。 您可以使用TIMEFORMATvariables来控制输出的格式:

 $ time sleep 1.99 real 0m1.999s user 0m0.004s sys 0m0.004s $ TIMEFORMAT=%0lR # truncate (not round) the decimal seconds $ time sleep 1.99 0m1s 

TIMEFORMAT的默认值:

 TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys%3lS' 

编辑:

您也可以使用sed修改/usr/bin/time的输出以类似的方式消除歧义:

 $ /usr/bin/time -f "%E" sleep 1.99 2>&1 | sed 's/:\([^:]\+\)$/m\1/;s/:/h/;s/\..*//;s/$/s/' 

使用模拟time输出演示:

 $ echo -e '0:01.99\n10:11:12' | sed 's/:\([^:]\+\)$/m\1/;s/:/h/;s/\..*//;s/$/s/' 0m01s 10h11m12s 

尝试通过这个切割命令pipe道。 我不是在Linux shell的前面试试,所以你的里程可能会有所不同。 例如,我不确定第一个字段是零还是一个。

切-d。 -f 1