Можно использовать этот небольшой сценарий удара.
#!/bin/bash
find . -type f -exec sh -c '
dn=`dirname "$1"`
bn=`basename "$1"`
fn=`echo "${bn%.*}"`
ext=`echo "${bn##*.}"`
FN=`echo "${fn^^}"`
newfn="${FN}"."${ext}"
#echo ${dn}/$newfn
if [ "${fn}" = "${FN}" ] ;then : ;else echo "${bn} renamed to ${newfn}";mv "$1" "${dn}/${newfn}";fi
' _ {} \;
Используйте printf
:
$ printf "%.4f\n" "$A"
1.2346
$ printf "%.4f\n" "$B"
0.0000
$ printf "%.4e\n" "$B"
1.2346e-05
$ printf "%.14f\n" "$B"
0.00001234567800
$ printf "%.4g\n" "$B"
1.235e-05
$ printf "%.4g\n" "$A"
1.235
Поскольку % e
может изменить показатель степени, чтобы быть уверенным, что он останется неизменным, вы можете использовать строковые манипуляции оболочки , чтобы отделить число от экспоненты и распечатать каждую по отдельности:
$ B=100.12345678E-05
$ printf '%.5fE%s\n' "${B%E*}" "${B##*E}"
100.12346E-05
$ {B% E *}
печатает все до 1-го E
и $ { B ## * E}
- все после первого E
.