112 lines
3.2 KiB
Bash
Executable File
112 lines
3.2 KiB
Bash
Executable File
#! /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
|