Re: Проблема с BASH-скриптом и файлами с пробелами в именах
> Здравствуйте!
>
> Нужно получить файла вот такого примерно вида:
>
> File1=/somedir/somefile1
> File2=/somedir/somefile2
> ...
>
> Пытаюсь сделать вот так:
>
> dir="/mnt/d/Music/Down Low"
> count=0
> for i in "$( find "$dir" -iname "*.mp3" -o -iname "*.ogg" )"; do
> let "count = $count + 1"
> echo $count
> echo "$i" >> "tmp_file"
> done
>
> Получается фигово:
>
> $ cat /tmp/tmp_file
> File1=/mnt/d/Music/Down Low/Down Low - Vision Of Life.ogg
> /mnt/d/Music/Down Low/Down Low - Moonlight.mp3
> /mnt/d/Music/Down Low/Down Low - Key To Your Heart.ogg
> /mnt/d/Music/Down Low/Down Low - Thank You.mp3
> /mnt/d/Music/Down Low/Down low - Once upon a time.mp3
> /mnt/d/Music/Down Low/Down Low - Johny B.ogg
> /mnt/d/Music/Down Low/Down Low - La Serenissima.ogg
>
> Т.е. оно весь вывод find обрабатывает целиком. Если убрать кавычки вокруг
> find (вот так: $( find "$dir" -iname "*.mp3" -o -iname "*.ogg" ) ), то оно
> разбивает строку по пробелам. Перепробовал уже кучу вариантов, кавычки ставил
>
> по-всякому - не выходит.
> Как такое сделать?
Здравствуйте 9A4172.
Скрипт получился не очень красивый, но вреде работает.
#!/bin/sh
dir="/home/d3rp/music"
count=0
find $dir -iname "*.mp3" -o -iname "*.ogg" > listn
sed 's/ /|/g' listn > listm
for i in $(cat listm); do
count=$(($count+1))
echo $count
echo "File$count=$i" >> "tmp_file1"
done
sed 's/|/ /g' tmp_file1 > tmp_file
rm -rf tmp_file1 listn listm
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 23078; Возраст листа: 868; Участников: 1472
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/487465