写脚本操练时经常会创建一些空文件,所以就删除空文件这个小问题操练下,于是有了以下这个小脚本。

# 判断是否是目录,如果是目录,就返回0,否则返回1
is_directory(){
        dir_path=$1
        if [ -d $dir_path ] ;then
                return 0
        else
                echo "$dir_path is not a directory."
                return 1
        fi
}

# 通过 file 命令判断文件是否是空文件
is_empty(){
        file=$1
        file_type=empty
        mark=`file $file | cut -f 2 -d " "`
        if [ "$mark" == "$file_type" ] ;then
                return 0
        else
                return 1
        fi
}


# 遍历目录中的文件,使用逻辑结构,如果是文档是空的,那么就必须执行 rm file 返回
# 值是删除文件的计数。
rm_empty_in_directory(){
        current_dir=$1
        count=0
        for i in `ls $current_dir` ;do
                is_empty $i && rm $i && let "count=$count+1"
        done
        #echo "count in function:$count"
        return $count
}

rm_file_count=0

# 如果没有写入参数,就使用当前目录作为删除的目录。
if [ $# -eq "0" ] ;then
        rm_empty_in_directory $PWD
# 调用函数的返回值也要使用变量$?来获取数值
        temp=$?
        rm_file_count=`echo "$rm_file_count + $temp" | bc`
else
# 写入参数,将参数作为需要删除的目录输入,遍历目录删除。
        for dir in $@ ;do
                if is_directory $dir ;then
                        temp=rm_empty_in_directory $dir
                        let "rm_file_count=$temp+$rm_file_count"
                else
                    continue
                fi
        done
fi

echo "removed $rm_file_count files."