0 votos

Constantemente revisar la carpeta en busca de un tipo de archivo específico y ejecutar un comando de terminal con el nuevo nombre de archivo como argumento.

Tengo una carpeta ~/Descargas

Estoy revisando (usando entr) en busca de videos .webm y cuando se agrega un archivo nuevo necesito que se convierta a .mp4 PERO no logro entender los argumentos que se pasan...

ls . | entr handbrakecli --encoder x264 --width 700 --format av_mp4 --optimize --non-anamorphic --rate 30 -i <nuevo_webm> -o <nombre_mismo_&_lt;append_mp4>

2voto

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.

0voto

Pavel Pervoy Puntos 11

Cambiado entr por fswatch:

fswatch . | find . -type f -name "*.webm" -exec handbrakecli --encoder x264 --width 700 --format av_mp4 --optimize --non-anamorphic --rate 30 -i "{}" -o "{}.mp4" \;

El problema es que el script se detiene después de la conversión del video. Necesito reiniciarlo cada vez.

Todavía no hay una solución estable ;(

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X