2013-08-30 6 views
0

Я пытаюсь написать команду оболочки (Linux), которая будет искать все субтитры, заканчивающиеся на NAME.el.srt, и сделать символическую ссылку в формате NAME.srt (удаление .el из этого).Использовать символическую ссылку для изменения формата субтитров

Использование:

/usr/bin/find /volume1/public/test -follow -type f \(-iname "*.el.srt" \)

дает мне следующие результаты:

/volume1/public/test/Arrow - S01E04.el.srt

/volume1/public/test/Arrow - S01E01.el.srt

/volume1/public/test/Arrow - S01E02.el.srt

/volume1/public/test/Arrow - S01E03.el.srt

Я не хочу их переименовывать. Я просто хочу создать символическую ссылку в той же папке, что и оригиналы.

я думал, что собирался быть легкий удар ... но через 4 часа я просто ищу кого-то более опытного, чтобы помочь мне :) Наконец-то я нашел:

IFS=$(echo -en "\n\b"); 

for j in $(find /volume1/video -follow -type d -name "*"); 
do 
cd $j; 
for i in $(find $j -name "*.el.srt" -maxdepth 1 -exec basename {} \;); 
do 
    rname=$(echo "$i" | sed -e 's/\.el\.srt/\.srt/g'); 
    ln -s "$i" "$rname"; 
done 
done 

Спасибо iamuser для указания в нужном направлении :)

ответ

0

Вы можете попробовать простую петлю для этого.

IFS=$(echo -en "\n\b"); 
for i in $(find . -name "*.el.srt"); 
do 
    rname=$(echo "$i" | sed -e 's/\.el\.srt/\.srt/g'); 
    ln -s "$i" "$rname"; 
done 

Он перебирает все файлы, которые заканчиваются с .el.srt в текущем каталоге. Для каждого файла создается временная переменная rname, которая имеет расширение .srt без части .el. Затем он символически ссылается на ln -s.

+0

Это дает мне следующие ошибки и создает некоторые сумасшедшие символические ссылки ... пер: ./Arrow: Файл существует пер -: Файл существует пер: ./Arrow: Файл существует пер -: Файл существует ln: ./Arrow: Файл существует ln: -: Файл существует ' – user2733322

+0

Отредактирован мой ответ. Вам нужно 'IFS'. – iamauser

+0

Да, теперь это работает. Можно ли использовать его с помощью команды find (как я уже упоминал выше), чтобы создать cron, который будет запускаться один раз в день? Я думаю, что с вашим решением я должен запускаться отдельно в каждой папке (и у меня есть MANY: O) – user2733322

Смежные вопросы