Bash: Пробелы в именах файлов

При использовании скрипта для asterisk, вылезла одна проблема – если в имени файла есть пробелы или другие спецсимволы (типа двоеточия), файл не обрабатывался. Краткий гуглеж привел к следующему

#!/bin/bash
#20110330 - Author: Gregg Hansen. Modified by Snake
#version 0.8
#http://snake.khd.ru
#Make sure to install Lame and copy mlame to your .wav dir
#If you specify your own filenames, use NO spaces.
recorddir="/var/spool/asterisk/monitor"
find ${recorddir} -name '*.wav' | grep in -v | grep out -v | while read i; do
month=`ls -l --time-style +'%b %d' "$i" | awk '{print $6}'`
day=`ls -l --time-style +'%b %d' "$i" | awk '{print $7}'`
mp3=`echo "$i" | cut -d "_" -f 2- | sed 's/.wav/.mp3/g' | sed 's/ /_/g' | sed 's/:/_/g'`
echo $mp3
lame -d -h -m j -b 128 "${i}" ${recorddir}/$mp3
if [ -d "${recorddir}/${month}" ];
    then    
        if [ -d "${recorddir}/${month}/${day}" ];
            then
                mv ${recorddir}/${mp3} ${recorddir}/${month}/${day}
            else
                mkdir ${recorddir}/${month}/${day}
                mv ${recorddir}/${mp3} ${recorddir}/${month}/${day}
        fi
    else 
        mkdir ${recorddir}/${month}
        mkdir ${recorddir}/${month}/${day}
        mv ${recorddir}/${mp3} ${recorddir}/${month}/${day}
fi
#mv ${recorddir}/${mp3} ${recorddir}/${month}/${day}
#Uncomment the below line if you want your .wavs moved to a different directory.
#This way you can review the timestamps and mp3 files before deleting the .wav
#mkdir ${recorddir}/wav_recordings
rm -f $i
done

Теперь все ок 😉

пруф

Leave a Reply