Видео ролики бесплатно онлайн

Смотреть 365 видео

Официальный сайт yerka 24/7/365

Смотреть видео бесплатно

01.06.10 01:51 dr_magnus

Есть вопрос!Почему не отрабатывает скрипт?

Решил я переименовать кучку МР3-файлов согласно прописанных тэгов.
Пишу однострочник:
# find -iname '*.mp3' -print0 | xargs -0 -I {} echo {}
./01.mp3
./02.mp3
./03.mp3
...
./0N.mp3

Отлично, отработал.
Нужно убрать из имени ./ и .mp3 - использую sed:
# find -iname '*.mp3' -print0 | xargs -0 -I {} echo {} | sed s/..// | sed s/.mp3/" - "/
01 -
02 -
03 -
...
0N -

Тоже хорошо.
Теперь нужно переименовать файлы в виде 01 - Имя трека:
# find -iname '*.mp3' -print0 | xargs -0 -I {} eyeD3 --rename="`echo {} | sed s/..// | sed s/.mp3/" - "/`%t" {}
Имя трека 1
Имя трека 2
...
Имя трека N

Теперь вопрос - а куда же делись мои 01, 02, 03 и т.д.? Где я допустил ошибку в однострочнике?



Deyt 01.06.10 02:20 # +8
find -iname '*.mp3' -print0 | xargs -0 -I {} eyeD3 --rename="%n - %t" {}

dr_magnus 01.06.10 18:54 # +0
ок. спасибо. признаю, что не внимательно прочитал мануал.
но вопрос остается - почему не отработал скрипт, а конкретно та часть, которая "`echo и т.д.?
PocketSam 01.06.10 08:16 # +0
А еще можно использовать Picard.
IamCrazy 01.06.10 09:18 # +0
А просто использовать команду rename?
Iliander 01.06.10 23:00 # +0
Есть предположение, что он не срабатывает из-за слишком большой вложенности: "{}" не обрабатывается внутри обратных кавычек.
Как вариант, подобную ситуацию можно разрулить через цикл while и переменную, которая будет сохраняться внутри цикла независимо от вложенности:
find -iname '*.mp3' | while read LINE ; do
eyeD3 --rename="`echo ${LINE} | sed s/..// | sed s/.mp3/" - "/`%t" $LINE
done
dr_magnus 02.06.10 01:02 # +0
"{}" не обрабатывается внутри обратных кавычек

это предположение или аксиома?
просто мне хотелось написать именно однострочник, без всяких while.. do и т.д.
может кто-нить, разбирающийся в скриптах, все же даст подсказку?
дело в том, что это не первая моя попытка - все эксперименты с использованием команды в качестве аргументы приводили к неудаче. помогите, плз - очень хочется разобраться.
спасибо.
Iliander 02.06.10 01:49 # +1
Аксиома?
Суди сам:

$ cat track
1
2
3
4
5
#!/bin/bash
find -iname '*.mp3' -print0 | xargs -0 -I {} eyeD3 --rename="`echo {} | sed s/..// | sed s/.mp3/" - "/`%t" {}
#find -iname '*.mp3' | while read LINE ; do
#eyeD3 --rename="`echo ${LINE} | sed s/..// | sed s/.mp3/" - "/`%t" ${LINE}
#done

bash -x track IN2F log
+ find -iname '*.mp3' -print0
++ echo '{}'
++ sed s/..//
++ sed 's/.mp3/ - /'
+ xargs -0 -I '{}' eyeD3 --rename=%t '{}'
find: `./orbit-root': Отказано в доступе
Renaming file to 'Try Honesty'

$ cat track
1
2
3
4
5
#!/bin/bash
#find -iname '*.mp3' -print0 | xargs -0 -I {} eyeD3 --rename="`echo {} | sed s/..// | sed s/.mp3/" - "/`%t" {}
find -iname '*.mp3' | while read LINE ; do
eyeD3 --rename="`echo ${LINE} | sed s/..// | sed s/.mp3/" - "/`%t" ${LINE}
done

bash -x track IN2F log
+ find -iname '*.mp3'
+ read LINE
find: `./orbit-root': Отказано в доступе
++ echo ./2003 - Billy Talent/Try Honesty.mp3
++ sed s/..//
++ sed 's/.mp3/ - /'
+ eyeD3 '--rename=2003 - Billy Talent/Try Honesty - %t' ./2003 - Billy Talent/Try Honesty.mp3


Это лишь первые строки лога, но по ним уже видно, что в случае цикла на обработку sed передается путь к файлу, а в случае с твоим однострочником — нет.

Хочешь принципиально это всё реализовать в одну строку?
find -iname '*.mp3' | while read LINE ; do ; eyeD3 --rename="`echo ${LINE} | sed s/..// | sed s/.mp3/" - "/`%t" ${LINE} ; done

А xargs (ровно так же, как и родной '-exec' у find) либо ущербен, либо я просто не умею его готовить.
dr_magnus 02.06.10 18:08 # +0
спасибо большое. буду разбираться.
хотя по прежнему не понятно, почему так происходит :-(

Посты Комментарии
Последние посты
    Посты Комментарии
    Последние комментарии
      Посты Комментарии
      Изменения
        Посты Комментарии Изменения Черновики Избранное
        Черновики (все)
          Посты Комментарии Изменения Черновики Избранное
          Избранное (всё)
            Посты Комментарии Изменения Черновики Избранное
            Лучшие блоги (все 122)
            Топ пользователей Топ блогов
            Топ пользователей Топ блогов
            Элита (все 2156 из 180 городов)
            Топ пользователей Топ блогов
            В сети: shidoh, Shtsh, punk, inkotnito

            Новенькие: Jeff, pilot, tellar, sirharris, Rurik
            welinux.ru

            Смотреть видео онлайн

            Онлайн видео бесплатно


            Смотреть русское с разговорами видео

            Online video HD

            Видео скачать на телефон

            Русские фильмы бесплатно

            Full HD video online

            Смотреть видео онлайн

            Смотреть HD видео бесплатно

            School смотреть онлайн