-list_browse(){
- meta="$_DATA/$ITEM/.index/meta"
- [ -d "${meta%/meta}" -a \! "$_DATA/$ITEM" -ot "${meta}" ] \
- && dir="$_DATA/$ITEM" . "$_EXEC/update_meta.sh"
- (cd "$_DATA/$ITEM";
- find ./ -type d \! -name .index -mindepth 1 -maxdepth 1 \
- ) | cut -d/ -f2- | sort
- sort -n "$meta" | cut -f6- \
- | while f="$(line)"; do
- [ -e "$_DATA/$ITEM/$f" ] && printf '%s\n' "$f"
- done
+list_filemeta(){
+ local meta base f fn file
+ base="$1"
+ meta="$_DATA/$ITEM/$base/.index/meta"
+ meta_dir "$_DATA/$ITEM/$base"
+
+ if [ $ORDER = Name ]; then
+ sort -k6 "$meta"
+ elif [ $ORDER = Length ]; then
+ sort -n -k1 "$meta"
+ else
+ cat "$meta"
+ fi \
+ | if [ "$FILTER" ]; then
+ sed -nr "$list_fex"
+ elif [ "${SEARCH#!}" != "${SEARCH}" ]; then
+ grep -aviE "$(STRING "${SEARCH#!}" |sed -r ':x s;((^|[^\\])(\\\\)*)\+;\1\\+;g; tx;')"
+ else
+ grep -aiE "$(STRING "${SEARCH}" \
+ | sed -r ':x s;((^|[^\\])(\\\\)*)\+;\1 ;g; tx;
+ s;((^|[^\\])(\\\\)*)\\\+;\1+;g;
+ s; ;\\+;g;')"
+ fi |cut -f6 | UNSTRING \
+ | while read -r fn; do
+ printf '%s\n' "${base}/${fn%${CR}}"
+ done | tee .index/debug