使用QNX Neutrino,我需要从它们的前辈中减去十六进制文件名。这些文件以十六进制的创建时间命名。下面给我一个纯十六进制值的列表,但我不能互相跟踪它们。
last=0
find /path/ -type f\(! iname ".*" \) -exec basename {} |
while read fname
do
current=$fname
echo "difference is $((current - last)) seconds
done
find命令给了我:
51b71f38
51b71f44
51b71f50
51b71f5c
51b71f74
我尝试过使用echo“ibase = 16; $ name”| bc但只切换输出值。有没有办法返回一个整数,这是这些十六进制值的差异?
答案 0 :(得分:1)
可能是这样的:
find /path/ -type f\(! iname ".*" \) -exec basename {} |
while read fname; do
last="$current"
current="$fname"
if [ $(( 0x$last )) -ne 0 ]; then
echo "difference is $(( 0x$current - 0x$last )) seconds"
fi
done
我使用你的find命令作为测试文件的输入。
$ cat ff
51b71f38
51b71f44
51b71f50
51b71f5c
51b71f74
$ while read fname; do last="$current" ; current="$fname" ; if [ $(( 0x$last )) -ne 0 ]; then echo "difference is $(( 0x$current - 0x$last )) seconds" ; fi ; done < ff
difference is 12 seconds
difference is 12 seconds
difference is 12 seconds
difference is 24 seconds
答案 1 :(得分:0)
current=$(echo "ibase=16; $fname" |bc)
实际上给了我内联所需的十进制值