比较bash中的文件夹大小?

时间:2015-10-14 17:38:36

标签: bash shell

actual_size="du -h $some_folder";   
y='eval $actual_size`
max_size=2MB

    if [[ y -lt  $max_size ]]; then            
            echo `du -h $some_folder`
            cp "$file" $some_folder` #$file points to some file

以上代码行有什么问题?我也试过

if [[$(stat -c%s $ some_folder)-lt $ max_size]];然后

任何帮助都会受到赞赏,Thnaks!

1 个答案:

答案 0 :(得分:0)

为了在脚本中使用POSIX du,有一个包装函数只能打印其倒数第二个字段的输出。这可以通过awk完成,或者我是如何使用eval扩展函数的倒数第二个参数:

#!/bin/sh 

duprint()
{
    if [ "$#" -gt 1 ]
    then    printf "%s" $( eval printf '$'$(( $# - 1 )))
    fi
}

duwrap()
{
    duprint $(du -s $@ 2>/dev/null)
}

duwrap "$@"

例如,如果您想要将多个目录的总大小复制到新的文件系统,这很有用:

./duwrapper /bin /etc /lib /boot

最后,可以使用他们的du包装函数来比较目录大小:

if [ "$(duwrap /lib)" -gt "$(duwrap /bin)" ]
then echo "/lib is greater"
fi