-list_browse(){
- local meta f fn file
- meta="$_DATA/$ITEM/.index/meta"
- meta_dir "$_DATA/$ITEM"
- (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
- fn="$(UNSTRING "${f#* }")"; fn="${fn%${CR}}";
- file="$(printf '%s\n' "$_DATA/$ITEM/${fn}".*)"
- file="${file##*/}"
- [ -e "$_DATA/$ITEM/${file}" ] \
- && printf '%s\n' "${file}"
- 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