#! /bin/sh timestamp() { output="$(stat -c'%Y' "$1" 2>/dev/null)" if [ $? != 0 ]; then eval "$(stat -s "$1" 2>/dev/null)" output="$st_mtime" fi echo "$output" } limit="$1" shift files="" while [ $# -ne 0 ]; do case "$1" in FROM) files="$files$(find "$2" -depth 1)$(echo)" shift shift ;; SORT) case "$2" in ALPHA) files="$(echo "$files" | sort -f -k 1,1)" ;; TIME) files="$(echo "$files" | while read -r file; do path="$(echo "$file" | awk '{ print $1 }')" time="$(timestamp "$path")" echo "$time $file" done | sort -k 1,1 | awk '{ $1="" }1')" ;; TITLE) files="$(echo "$files" | while read -r file; do path="$(echo "$file" | awk '{ print $1 }')" title="$(cat "$file" | sed '1!d')" echo "$path $title" done | sort -k 2 | awk '{ print $1 }')" ;; SUBTITLE) files="$(echo "$files" | while read -r file; do path="$(echo "$file" | awk '{ print $1 }')" subtitle="$(cat "$file" | sed '2!d')" echo "$path $subtitle" done | sort -k 2 | awk '{ print $1 }')" ;; esac shift shift ;; REV) files="$(echo "$files" | tac)" shift ;; EXCLUDE) files="$(echo "$files" | sed "/$2/d")" shift shift ;; INCLUDE) files="$(echo "$files" | grep -E "$2")" shift shift ;; LABEL) case "$2" in DATE) files="$(echo "$files" | while read -r file; do [ "$file" = "" ] && continue path="$(echo "$file" | awk '{ print $1 }')" time="$(timestamp "$path")" echo "$file $(date -r "$path" '+%Y-%m-%d')" done)" ;; TITLE) files="$(echo "$files" | while read -r file; do [ "$file" = "" ] && continue path="$(echo "$file" | awk '{ print $1 }')" echo "$file $(head -n1 "$path" 2> /dev/null | sed 's/^#//g' | sed 's/^ //g')" done)" ;; SUBTITLE) files="$(echo "$files" | while read -r file; do [ "$file" = "" ] && continue path="$(echo "$file" | awk '{ print $1 }')" echo "$file $(cat "$path" 2> /dev/null | sed '2!d' | sed 's/^##//g' | sed 's/^ //g')" done)" esac shift shift ;; esac done [ "$files" = "" ] && exit 0 [ "$limit" != "ALL" ] && files="$(echo "$files" | head -n"$limit")" echo "$files" | while read -r file; do echo "=> $file" done