2014-09-08 4 views
0

Я загрузил несколько файлов из https://www.grc.com/securitynow.htm, который является подкастом. Я загрузил 2 файла на подкаст.Bash переименовать файл на основе строки, напечатанной из другого файла

Файл 1 называется зп-471.mp3 (у меня есть 471 из них по имени последовательно) Файл 2 называется зп-471.txt (у меня есть 471 из них по имени последовательно)

То, что я пытаюсь сделать это, я печать 6-й строки файла, и резок от 2 разделителя до конца строки с этим:

sed -n 6p sn-471.txt | cut -f2- 

это работает совершенно прямо сейчас. Причина для 6-й линии до сих пор в моем тесте, 6-я строка - это всегда TITLE: а затем вкладка, а затем название эпизода. Я предполагаю, что если я столкнулся с проблемой, когда 6-я строка не всегда является заголовком, тогда я могу grep для TITLE: затем используйте один и тот же разрез.

С вышеуказанным я могу напечатать заголовок эпизода. То, что я пытаюсь сделать и не могу склонить голову, - использовать эти данные, чтобы потом переименовать mp3-файл.

До сих пор я придумал это, но он не работает.

#/bin/bash 
for i in 
    sn-471.txt;                   
do 
    X=$(sed -n 6p $i | cut -f2-) 
    mv $i `${X}`.txt 
done 

Я понимаю, что мне нужно будет сделать «зп-471.txt» часть что-то вроде «зп -. * .txt» в ближайшее время, но для этого теста это то, что я использую. Если это уже было рассмотрено, я не смог найти его до сих пор через различные поисковые запросы Google.

Благодарим вас за любую помощь, которую вы предоставляете!

ответ

1

Вы можете сохранить вывод команды sed переменной с подстановкой команд. Затем вы можете использовать расширение параметра, чтобы удалить расширение «.txt»:

for file in sn-*.txt ; do 
    title=$(sed -n 6p "$file" | cut -f2-) 
    mv "${file%txt}"mp3 "$title".mp3 
done 
+0

Удивительно, это уже немного лучше, чем я был выше. Новая проблема, ее добавление? В начало и конец имени файла. Любая идея почему? Пример, название 471: ** PGP: время для обновления? ** Имя созданного мной файла: **? PGP: Время для обновления. Mp3 ** Спасибо очень за вашу помощь! – MaSammich

+0

@MaSammich: проверьте под 'xxd', что'? 'Совпадает с'? '. Это похоже на проблему с кодировкой. – choroba