1.1, Mim (?), 19:36, 21/01/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
И где здесь собственно рекурсия?
Файлы обрабатываются в цикле, но никак не рекурсивно.
| |
1.2, Александр Симаков (?), 08:59, 22/01/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Рекурсия в вызове find. Если передать скрипту директорию в которой лежат альбомы музыки в формате flac, то скрипт обработает все эти альбомы независимо от того как глубоко они закопаны.
| |
1.6, pavlinux (ok), 19:59, 25/01/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
РИКУРСИЯ МЛЯ!!!
#!/bin/bash
function recoder(){
dir='ls -p | grep "/"'
for i in $dir
do
pushd . > /dev/null 2>&1;
cd $i
if [ \"*.mp3\" ]
then
echo 'pwd'/*.mp3; # Тута можно перекодировать
fi
recoder; # рекурснём...
popd > /dev/null 2>&1;
done
}
cd $1;
recoder;
# EOF
| |
|
2.9, Александр Симаков (?), 14:08, 26/01/2009 [^] [^^] [^^^] [ответить]
| +/– |
Да, но тут не извлекаются теги из flac-файлов, нет
возможности указать отдельную директорию для mp3-файлов
и, собственно, нет самого перекодирования! Зачем нужен
этот скрипт? Обойти все mp3 файлы и вывести их имена?
К тому-же обходить flac-файлы а не mp3.
ИМХО, _однострочный_ вариант с find-ом для этой цели
куда проще и понятнее.
| |
|
3.11, pavlinux (ok), 12:34, 27/01/2009 [^] [^^] [^^^] [ответить]
| +/– |
А тут вообще ничего не извлекается, я показал как работает find и где рекурсия.
| |
|
|
1.7, AlexGAV (?), 09:43, 26/01/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
А как быть, если в имени исходного файла есть пробел? Например, в каталоге, содержащем
01 - The Great Marsh.flac
02 - Rhayader.flac
скрипт
for i in $(find . -name "*.flac" |sort); do echo $i; done
выводит
./01
-
The
Great
Marsh.flac
./02
-
Rhayader.flac
Решил эту проблему заменой пробела на '_' sed'ом, но это изврат, имхо. Может, кто подскажет более элегантное решение?
| |
|
2.10, Andrey Mitrofanov (?), 14:48, 26/01/2009 [^] [^^] [^^^] [ответить]
| +/– |
>for i in $(find . -name "*.flac" |sort); do echo $i; done
find . -name "*.flac" -print0 |sort -z |xargs -0 -n1
:-P
find ... | while read n; do ...; done
while read n; do ...; done <( find ... )
| |
|
1.13, 3DRaven (?), 19:58, 08/02/2010 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Спасибо автору. Большая экономия времени и удобство! Коментаторы срач устроили.
Сделайте лучше.
| |
1.14, crick (ok), 15:16, 17/04/2010 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Если в mp3-файлах на выходе скрипта не появились тэги, то вот в этом месте:
>case "$tag_name" in
> TITLE)
> echo -n "--tt \"$tag_value\" "
> ;;
надо название тэгов или исправить на нижний регистр или в нижнем регистре прописать через "|", т.е. так:
case "$tag_name" in
TITLE|title )
echo -n "--tt \"$tag_value\" "
;;
Судя по всему, с момента написания Александром Симаковым замечательно скрипта, который здесь обсуждается, произошли изменения в выводе команды metaflac.
За сам скрипт автору глубочайший респект!
| |
|
2.15, crick (ok), 15:19, 17/04/2010 [^] [^^] [^^^] [ответить]
| +/– |
Для тех, кто не силен в скриптинге, забыл добавить, что менять надо не только тэг TITLE но и все остальные до конца цикла case (т.е. до слова esec)
| |
|
1.16, bokr (?), 21:57, 07/10/2012 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Огромное спасибо! Те, кому рекурсивность кажется не рекурсивной, пусть используют свою сверхдо''бчивую до''бчивость на своей несмышленной смышленности.
| |
|