#!/bin/zsh set -euo pipefail script_dir=${0:A:h} catalog_dir=${script_dir:h} outputs_dir=${catalog_dir:h} bundle_dir="$outputs_dir/Calculet-NPU-analysis-bundle-20260801" image="$bundle_dir/remote-export/Calculet-NPU-Linux-case-sensitive-views.sparsebundle" case_view="$bundle_dir/remote-export/extracted-case-sensitive" if ! mount | grep -Fq " on $case_view "; then "$script_dir/挂载大小写敏感视图.command" fi main_tmp=$(mktemp "$catalog_dir/.main-index.XXXXXX") case_tmp=$(mktemp "$catalog_dir/.case-index.XXXXXX") link_tmp=$(mktemp "$catalog_dir/.link-index.XXXXXX") trap 'rm -f "$main_tmp" "$case_tmp" "$link_tmp"' EXIT print -r -- $'类型\t字节数\tmtime_epoch\t相对路径' > "$main_tmp" find "$bundle_dir" \ \( -path "$image" -o -path "$case_view" \) -prune \ -o -exec stat -f $'%HT\t%z\t%m\t%N' {} + \ | sed "s#$outputs_dir/##" >> "$main_tmp" image_bytes=$(du -sk "$image" | awk '{printf "%.0f", $1 * 1024}') printf 'sparsebundle\t%s\t%s\t%s\n' \ "$image_bytes" \ "$(stat -f %m "$image")" \ "Calculet-NPU-analysis-bundle-20260801/remote-export/Calculet-NPU-Linux-case-sensitive-views.sparsebundle" \ >> "$main_tmp" print -r -- $'类型\t字节数\tmtime_epoch\t相对路径' > "$case_tmp" find "$case_view" -exec stat -f $'%HT\t%z\t%m\t%N' {} + \ | sed -e "s#$case_view/##" -e "s#$case_view#.#" >> "$case_tmp" print -r -- $'统一入口\t相对目标\t状态' > "$link_tmp" find "$catalog_dir" -type l -print \ | LC_ALL=C sort \ | while IFS= read -r entry; do rel=${entry#$catalog_dir/} target=$(readlink "$entry") if [[ -e "$entry" ]]; then state="OK" else state="BROKEN" fi printf '%s\t%s\t%s\n' "$rel" "$target" "$state" done >> "$link_tmp" mv "$main_tmp" "$catalog_dir/主采集包全文件索引.tsv" mv "$case_tmp" "$catalog_dir/大小写敏感视图全文件索引.tsv" mv "$link_tmp" "$catalog_dir/统一目录链接清单.tsv" trap - EXIT print -r -- "Updated: $catalog_dir/主采集包全文件索引.tsv" print -r -- "Updated: $catalog_dir/大小写敏感视图全文件索引.tsv" print -r -- "Updated: $catalog_dir/统一目录链接清单.tsv"