Files
calculet-npu-research-archive/provenance/重新生成全文件索引.command

60 lines
2.1 KiB
Bash
Executable File

#!/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"