我正在尝试使用du -sk
来获取两个文件夹的大小
dirsize_temp=`du -sk /folder/path/here`
然后是一个 if 语句来比较大小。唯一的问题是,当您运行命令时,它会返回类似
123456 /folder/path/here
我目前正在使用
dirsize=${dirsize_temp%%/*}
去除“ /folder/path/here
”部分,但我在去除空格时遇到了问题。它们似乎不是实际的空格,因此 " ${dirsize//\ /}
" 或 " ${dirsize// /}
" 无法删除它们,但它们仍然使我无法比较两个变量。是否有一些我缺少的转义字符,或者是否有一种更简单的方法来获取两个文件夹的大小而无需在末尾添加额外的东西?
你想使用
awk
.它通常是一个选项卡。(大多数 posix 系统都有 hexdump,或者更简洁的名称 xxd,它会显示打印的字符)。比 awk 更有效的解决方案是“cut”:
du
输出制表符 (ASCII 9) 作为分隔符。xxd
您可以通过将输出传输到或来验证这一点od -cx
。因此,你需要dirsize=${dirsize_temp/TAB*/}
。您可以在 bash 提示符下或在 ViM 中按Ctrl-V
then键入文字 TAB 字符TAB
。+1 用于演示正则表达式替换语法,您每天都会学到新东西!介意我是否因此而研究了它,现在用 ${var//+([[:space:]])/ } ...