PDA

View Full Version : Shell: codificare file vecchi di 6 ore con determinata estensione


budfoxli77
07-05-2012, 23:04
Ciao a tutti,

spero che qualcuno possa essermi di aiuto...

Allora....


Ho bisogno di fare un piccolo script che deve entrare in una determinata directory e rilevi file video vecchi di 6 ore con estensione .ASF e le ricodifichi con ffmpeg in formato .avi. (preservando lo stesso nome)


Il comando con ffmpeg è normalmente questo:

ffmpeg -i /percorso/Sala/nomefile.asf -acodec copy -vcodec copy /percorso/nomefile.avi

Ma come faccio ad indicare di rilevare TUTTI i file con estensione .ASF più vecchi di 6 ore e ricodificarli automaticamente in .AVI ? Magari preservando lo stesso nome cancellando il "vecchio file .ASF" già codificato.

Grazie a tutti per la collaborazione.

Gimli[2BV!2B]
08-05-2012, 00:53
#!/bin/bash

MINUTI=360

INDIR="/percorso/Sala"
OUTDIR="/percorso"

find "$INDIR" -iname "*.asf" -mmin +$MINUTI | while read file ; do
FILENAME=$(basename "$file" | sed -e 's/\.\(.\{4\}\|.\{3\}\|.\{2\}\|.\{1\}\)$//')
ffmpeg -i "$file" -acodec copy -vcodec copy "$OUTDIR/$FILENAME.avi"
# rm "$file"
done
Le variabili all'inizio dovrebbero essere autoesplicative: aggiustale come ti serve.
Non ho parametrizzato asf.
L'espressione regolare è un po' eccessiva, ma jolly per estensioni da 1 a 4 lettere di lunghezza.
L'rm finale è commentato per non fare come il sottoscritto che s'è appena rimescolato i due file di prova utilizzati.
È tardi, non garantisco che non possa installarti un nuovo sistema operativo o far perdere le foglie ai gerani sul davanzale, controllalo e fai delle prove!

P.S. ho provato ad usare exec di find per aver un solo comando, ma non son riuscito ad incastrarci il nome pulito del file.

budfoxli77
08-05-2012, 11:07
Grazie !

Mi metto subito all'opera !!!

Sei un Grande !!!

budfoxli77
08-05-2012, 12:34
Tutto OK ... Solo nella variabile dei minuti ho dovuto inserire il simbolo "-" anziché "+"


Grazie infinite !