entr
es una "utilidad para ejecutar comandos arbitrarios cuando cambian archivos", no monitorea específicamente nuevos archivos (puede pasar un archivo nuevo al comando, pero no pude hacer que esto funcione de manera confiable). Puedes solucionar esto (como hiciste) haciendo que entr
monitoree el directorio en sí mismo, pero aún necesitas encargarte de identificar cuáles archivos son realmente nuevos y evitar la reprocesación.
cd ~/Downloads
mkdir -p videos
while :; do
ls . | entr -dz find . -depth 1 -type f -iname "*.webm" -exec sh -c '
f="$1"
mv -- "$f" videos/
handbrakecli --encoder x264 --width 700 --format av_mp4 --optimize --non-anamorphic --rate 30 -i "videos/$f" -o "videos/${f%.webm}.mp4"
# rm "videos/$f"
' _ {} \;
done
Esto utiliza find
para identificar nuevos archivos WebM, los mueve a un directorio diferente (para evitar reprocesamiento) y ejecuta Handbrake en ellos. Descomenta la última línea para eliminar automáticamente los archivos WebM después del procesamiento. Para terminar, presiona Ctrl-Z y luego ejecuta kill -9 %1
.
PD: Como @gilby ya mencionó en los comentarios: Obtén Hazel, funciona de maravilla.
PPD: Además, las respuestas en Monitor a folder for changes, and run a command when a change is detected proporcionan algunas formas adicionales de activar scripts de shell después de que el contenido de un directorio cambia.