#!/bin/bash

find_small_files() {
    local search_dir="${1:-.}"
    local size_limit=500k  # 支持k/M/G单位

    # 验证目录是否存在
    if [ ! -d "$search_dir" ]; then
        echo "Error: Directory '$search_dir' does not exist" >&2
        return 1
    fi

    # 执行查找并格式化输出
    #find "$search_dir" -type f -size +1b -size -"$size_limit" -printf "%p %9s bytes\n"

    find "$search_dir" -type f -size +1b -size -"$size_limit" -printf "%d %p %9s bytes\n" | sort -n | cut -d ' ' -f 2-
}

show_file() {
    local filename="$1"

    # 检查文件是否存在
    if [ ! -f "$filename" ]; then
        echo "Error: File $filename not found" >&2
        return 1
    fi

    echo ""
    # 输出文件名
    echo "$filename"

    # 输出代码块
    echo '<begin_of_file_content>'
    cat "$filename"
    echo '</end_of_file_content>'
}

# 检查 _files.txt 是否存在
if [[ ! -f "_files.txt" ]]; then
    # 如果文件不存在，运行 find_small_files 并生成 _files.txt
    echo "_files.txt 不存在，正在生成..."
    find_small_files . > _files.txt
else
    # 读取 _files.txt 文件并处理每个文件
    cat _files.txt | awk '{print $1}' | while read f; do
        show_file "$f"
    done
fi