Вызывая list.txt ваш список:
for i in $(cat list.txt)
do
lynx -accept_all_cookies -dump $i |grep "http" |sed -e "s/^.*http/http/"
done
Предлагаю перенаправить вывод на какой-нибудь файл.
Ответ, на который вы смотрели, был на вопрос, который не требовал фактического переименования файлов на диске, а просто преобразовывал имена файлов, как сообщается на терминале .
Это означает, что ваше решение будет работать, есливы используете команду mv
вместо printf
(которая просто выведет строку на терминал).
for f in *.mp3; do mv "$f" "${f%.mp3}_p192.mp3"; done
Я бы посоветовал вам сначала запустить цикл printf
, чтобы убедиться, что имена преобразуются так, как вы ожидаете.
Часто бывает безопасно просто вставить echo
перед mv
, чтобы увидеть, что будет выполнено (это может быть хорошей идеей, когда вы имеете дело с с циклами над потенциально разрушительными командами, такими как mv
, cp
и rm
):
for f in *.mp3; do echo mv "$f" "${f%.mp3}_p192.mp3"; done
или, с более подходящим форматированием:
for f in *.mp3; do
echo mv "$f" "${f%.mp3}_p192.mp3"
done
Вы можете использовать команду переименовать . Например, чтобы добавить текст «_p192» перед расширением файла, вы можете попробовать:rename -n 's/(.*)\.mp3/$1_p192.mp3/' *.mp3.
Приведенная выше команда переименует все файлы с расширением.mp3 в текущем каталоге. Команда выведет на консоль только переименованные файлы. Чтобы действительно переименовать файлы, удалите флаг -n.
Модификатор 's' указывает на замену. Первая часть подстановки — это регулярное выражение для сопоставления текста в имени файла. Вторая часть — замещающий текст. Последний аргумент команды rename — шаблон глобуса, указывающий, какие файлы нужно переименовать
.