larigira-scripts/ultimacartella
2024-07-27 20:38:47 +02:00

73 lines
1.3 KiB
Bash
Executable file

#!/bin/bash
usage() {
echo "Usage: $0 [options] BASEDIR"
echo " Accoda tutti i file presenti nella cartella "
echo " piu' recente (usando l mtime) all interno di BASEDIR"
echo ""
echo " I file sono messi tutti, ordinati in ordine alfabetico"
echo ""
echo "Options:"
echo " -p DIRPREFIX La directory deve iniziare con questa stringa"
}
pickdir() {
base=$1
prefix=$2
sorting="-r" # time-based; use "-r" for name-based
if [[ -z "$prefix" ]]; then
ls -1d $sorting "$base"/*/|head -n1
else
ls -1d $sorting "$base/${prefix}"*/|head -n1
fi
}
prefix=
while getopts p: opt; do
case $opt in
p)
prefix=$OPTARG
;;
esac
done
shift $((OPTIND-1))
if [[ $# -ne 1 ]]; then
usage >&2
exit 2
fi
base=$1
shift
set -e
set -u
if [[ ! -d "$base" ]]; then
echo "Errore: cartella non esistente" >&2
usage >&2
exit 2
fi
pickeddir=$(pickdir "$base" "$prefix")
if [[ -z "$pickeddir" ]]; then
echo "Errore: cartella vuota" >&2
exit 2
fi
if [[ ! -d "$pickeddir" ]]; then
echo "Errore: cartella trovata non esistente ($pickeddir)"
exit 2
fi
empty=true
while read -r fpath
do
empty=false
fpath=$(readlink -f "$fpath")
echo "file://$fpath"
done < <(find "$pickeddir" -type f -size +10k \( -iname '*.mp3' -o -iname '*.ogg' \)| sort)
if $empty; then
echo "Warning: no file output ($pickeddir)" >&2
exit 1
else
exit 0
fi