Od razu zaznaczam że szukałem w sieci i próbowałem sam to zrobić ale niestety jestem głównie sieciowcem i po 2 dniach sie poddałem.
Komuś to zajmie pewnie 5 minut odpowiedzieć więc PROSZE o pomoc.
Mam skrypt shell, który konwertuję stare nagrania .wav w Asterisk do mp3 i wrzuca na przenośny dysku USB do odpowiedniej struktury katalogów wg daty nagrania, zaszytej w nazwie pliku.
Przykładowy plik to:
113-98601280181-20110722-101511-1311322511.6422.wav.
I chcę wyłuskać z niego 2011 i 07 (trzecia liczba) jako dwie zmienne $...
Poniżej skrypt gdzie próbowałem na dwa sposoby (regexp i cut -d)
ale cos mi to nie działa - regexp wywala błąd składni a $data jest pusty.
Teraz ten skrypt po prostu bierze aktualną datę pliku z momentu wykonywania się w cronie i to jest źle.
Wspomniany Asterisk to dokładnie Trixbox bazujący na CentOS:
[trixboasterisk bin]# uname -a
Linux trixboasterisk 2.6.18-128.1.10.el5 #1 SMP Thu May 7 10:39:21 EDT 2009 i686 i686 i386 GNU/Linux
Interesuje nas to co zachaszowane !
#!/bin/sh
# Converts call records older then 30 days to mp3 and archives them into special directory structure
for i in `find /var/spool/asterisk/monitor/* -mtime +30`; do
file=`basename "$i" .wav`
#file =~ m/^.*-.*-([0-9]{4})([0-9]{2})([0-9]{2})-.*/
#rok=$1
#miesiac=$2
#echo $file | cut -d'-' -f3 | read data
rok=$(date +"%Y")
miesiac=$(date +"%B")
path="/var/spool/asterisk/monitor/archiwum/$rok/$miesiac"
echo "###### Konweruje plik: $file.wav ######"
mkdir -p $path
lame -b 32 "$i" "$path/$file.mp3"
rm -f "$i"
echo "###### Zrobione ######"
done