shell 脚本统计 http 文件服务器下指定目录及其子目录下所有文件的大小

shell脚本如下:
首先 vi calculate_size.sh 写入下入内容

#!/bin/bash

url=$1
excludes=("." "..", "./", "../")

TOTAL_SIZE=0
FILENAME="calculate_size_result.log"
echo $FILENAME

function calculate_size() {
    local current_url="$1"
    local file_list=$(curl -s "$current_url" | grep -oP '(?<=href=")[^"]+')

    for file in $file_list; do
        local file_url="$current_url$file"

        if [[ ! " ${excludes[@]} " =~ " ${file} " ]]; then
                    local file_size=$(curl -s --head "$file_url" | grep -i "Content-Length" | awk '{ print $2 }'|sed 's/\r//g')
                    echo "File: ${file_url}  Size: ${file_size} TOTAL_SIZE: ${TOTAL_SIZE}"
                    echo "File: ${file_url}  Size: ${file_size} TOTAL_SIZE: ${TOTAL_SIZE}" >> $FILENAME

                        TOTAL_SIZE=$((TOTAL_SIZE + file_size))
                        calculate_size "$file_url/"
        fi
    done
}

calculate_size "$url"
echo "finish $url, TOTAL_SIZE: ${TOTAL_SIZE}"
echo "finish $url, TOTAL_SIZE: ${TOTAL_SIZE}" >> ${FILENAME}

执行 sh calculate_size.sh http://example.com/some/dir/ 即可统计 http 文件服务器http://example.com/some/dir/ 中 dir 目录及其子目录下所有文件的大小。

你可能感兴趣的:(shell,linux,http,bash)