如何在 solaris KSH Shell 脚本中仅显示特定扩展名的总文件大小(以 MB GB 或 KB 为单位)
How to show only total file size of particular extension in MB GB OR KB in solaris KSH Shell script
如何在 sun solaris KSH Shell 脚本中仅显示特定扩展名的总文件大小(以 MB GB 或 KB 为单位)我已经尝试过 AWK 命令,下面是命令:-
BACKUP_SIZE=`find $EXPDP_DIR_PATH -name "DotNet_LI_TRADES_pre_release_*_12092017.log" -exec ls -ltr {} \; | awk ' BEGIN{split("B KB MB GB TB PB EB ZB YB",v)} {s+=} {s=1;while(>1024&&s<9){/=1024;s++} printf "%6.2f %s\n",,v[s],}'`
输出:-
回声$BACKUP_SIZE
681.02 MB 682.54 MB 552.33 MB 1.77 GB 5.92 GB 374.07 MB
期望输出:-
66.87 GB
我相信你的输出应该在左右 9.9 GB
似乎是打字错误。如果您的 Input_file 与显示的示例相同,那么以下内容也可能对您有所帮助。
BACKUP_SIZE="681.02 MB 682.54 MB 552.33 MB 1.77 GB 5.92 GB 374.07 MB"
echo $BACKUP_SIZE |
nawk '{
for (i=2;i<=NF;i+=2) {
if ($i=="MB") {
val=val?val+$(i-1)*.001 : $(i-1)*.001
} else {
val=val?val+$(i-1) : $(i-1)
}
}
}
END { print val }'
由于您在这个问题上添加了 Solaris,因此在此处添加:在 Solaris/SunOS 系统上,将 awk
更改为 /usr/xpg4/bin/awk
、/usr/xpg6/bin/awk
或 nawk
编辑: 由于 OP 需要在 2 个浮点数中得到答案,因此以下内容可能对您有所帮助。
echo $BACKUP_SIZE |
nawk '{
for(i=2;i<=NF;i+=2) {
if ($i=="MB") {
val=val?val+$(i-1)*.001 : $(i-1)*.001
} else {
val=val?val+$(i-1) : $(i-1)
}
}
}
END {
printf("%.02f %s\n", val, "GB" )
}'
如何在 sun solaris KSH Shell 脚本中仅显示特定扩展名的总文件大小(以 MB GB 或 KB 为单位)我已经尝试过 AWK 命令,下面是命令:-
BACKUP_SIZE=`find $EXPDP_DIR_PATH -name "DotNet_LI_TRADES_pre_release_*_12092017.log" -exec ls -ltr {} \; | awk ' BEGIN{split("B KB MB GB TB PB EB ZB YB",v)} {s+=} {s=1;while(>1024&&s<9){/=1024;s++} printf "%6.2f %s\n",,v[s],}'`
输出:-
回声$BACKUP_SIZE
681.02 MB 682.54 MB 552.33 MB 1.77 GB 5.92 GB 374.07 MB
期望输出:-
66.87 GB
我相信你的输出应该在左右 9.9 GB
似乎是打字错误。如果您的 Input_file 与显示的示例相同,那么以下内容也可能对您有所帮助。
BACKUP_SIZE="681.02 MB 682.54 MB 552.33 MB 1.77 GB 5.92 GB 374.07 MB"
echo $BACKUP_SIZE |
nawk '{
for (i=2;i<=NF;i+=2) {
if ($i=="MB") {
val=val?val+$(i-1)*.001 : $(i-1)*.001
} else {
val=val?val+$(i-1) : $(i-1)
}
}
}
END { print val }'
由于您在这个问题上添加了 Solaris,因此在此处添加:在 Solaris/SunOS 系统上,将 awk
更改为 /usr/xpg4/bin/awk
、/usr/xpg6/bin/awk
或 nawk
编辑: 由于 OP 需要在 2 个浮点数中得到答案,因此以下内容可能对您有所帮助。
echo $BACKUP_SIZE |
nawk '{
for(i=2;i<=NF;i+=2) {
if ($i=="MB") {
val=val?val+$(i-1)*.001 : $(i-1)*.001
} else {
val=val?val+$(i-1) : $(i-1)
}
}
}
END {
printf("%.02f %s\n", val, "GB" )
}'