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

Смотреть мамочки видео

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

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

dr_magnus 01.06.2010 01:51

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

Решил я переименовать кучку МР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 и т.д.? Где я допустил ошибку в однострочнике?


Тэги: МР3 скрипт теги
+ 1 -
Похожие Поделиться

Deyt 01.06.2010 02:20 #
+ 9 -
find -iname '*.mp3' -print0 | xargs -0 -I {} eyeD3 --rename="%n - %t" {}
dr_magnus 01.06.2010 18:54 #
+ -2 -
ок. спасибо. признаю, что не внимательно прочитал мануал.
но вопрос остается - почему не отработал скрипт, а конкретно та часть, которая "`echo и т.д.?
PocketSam 01.06.2010 08:16 #
+ 0 -
А еще можно использовать Picard.
IamCrazy 01.06.2010 09:18 #
+ 0 -
А просто использовать команду rename?
Iliander 01.06.2010 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.2010 01:02 #
+ -1 -
"{}" не обрабатывается внутри обратных кавычек

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

$ cat track
#!/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
#!/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.2010 18:08 #
+ -2 -
спасибо большое. буду разбираться.
хотя по прежнему не понятно, почему так происходит :-(
mironov_orig 25.12.2011 22:39 #
+ 0 -
чо происходит, чо происходит. первый сед тупо удаляет два первых символа, вот что происходит.
1
2
$ echo 123 | sed 's/..//'
3

В хорошем качестве hd видео

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


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

Online video HD

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

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

Full HD video online

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

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

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