我正在尝试使用du -sk来获取两个文件夹的大小
dirsize_temp=`du -sk /folder/path/here`
然后用一个if语句来比较大小。 唯一的问题是,当你运行命令时,它会返回类似的东西
123456 /folder/path/here
我目前正在使用
dirsize=${dirsize_temp%%/*}
去除“ /folder/path/here ”部分,但我有问题摆脱空间。 他们似乎并不是实际的空间,所以“ ${dirsize//\ /} ”或“ ${dirsize// /} ”无法将其删除,但仍然使我无法比较两个variables。 有没有一些转义字符,我缺less,或更容易的方法来获得两个文件夹的大小没有额外的东西钉在最后?
你想用awk 。
dirsize=`du -sk /folder/path/here | awk '{print $1}'`
这通常是一个选项卡。 (打大多数posix系统有hexdump,或更简单的命名xxd这将显示您打印的字符)。 比awk更有效的解决scheme是'cut':
dirsize=`du -sk /folder/path/here | cut -f1`
du输出一个TAB字符(ASCII 9)作为分隔符。 您可以通过将输出pipe道输送到xxd或od -cx来validation。 因此,您需要dirsize=${dirsize_temp/TAB*/} 。 您可以在bash提示符下键入一个文字的TAB字符,也可以按下Ctrl-V TAB在ViM中键入。
+1来演示这个正则expression式replace语法,你每天都会学到新的东西! 请记住,如果我研究它,现在用$ {var // +([[:space:]])/}