if [ ! -s "$c_tags" -o ! -s "$c_tagcategories" ] \
|| [ "$(find "$_DATA/" -path '*/.index/meta' -newer "$c_tags")" ]
then
- w_tags="$( cn=1
- find "$_DATA/" -path '*/.index/meta' -print0 \
- | xargs -0 -r sed -E '
- s;^.*\t.*\t.*\ttags=(.*)\tcomment=.*\t.*\r$;\1;;
- s;,;\n;g;' \
- | { sort; printf '\n'; } \
- | while read -r tag; do
- if [ "$tag" = "$otag" ]; then
- cn=$((cn + 1))
- else
- printf "%i %s\n" "$cn" "$(UNSTRING "$otag")"
- cn=1
- fi
- otag="$tag"
- done \
- |sort -rn |cut -f2- |HTML \
- |sed "s-
-\n-g; s;\n\n;\n;g;"
+ w_tags="$(
+ list_meta |sed -E '
+ s;^.*\ttags=([^\t]*)\t.*$;\1;;
+ s;,;\n;g;
+ ' \
+ | sort |uniq -c |sed -E 's;^ *[0-9]+ ;;;' |sort -rn \
+ | UNSTRING | HTML \
+ | sed -E 's;
\;;\n;g; s;\n+;\n;g;'
)"
w_tagcategories="$(printf %s "$w_tags" | sed -rn '/:/s;^-?([^:]+):.*$;\1;p' |sort -u )"
printf %s "$w_tags" >"$c_tags"