Добавить текст в конец имени файла, но до расширения

Вызывая list.txt ваш список:

for i in $(cat list.txt) 
do 
  lynx -accept_all_cookies -dump $i |grep "http" |sed -e "s/^.*http/http/"
done

Предлагаю перенаправить вывод на какой-нибудь файл.

3
27.01.2019, 11:04
2 ответа

Ответ, на который вы смотрели, был на вопрос, который не требовал фактического переименования файлов на диске, а просто преобразовывал имена файлов, как сообщается на терминале .

Это означает, что ваше решение будет работать, есливы используете команду 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
15
27.01.2020, 21:13

Вы можете использовать команду переименовать . Например, чтобы добавить текст «_p192» перед расширением файла, вы можете попробовать:rename -n 's/(.*)\.mp3/$1_p192.mp3/' *.mp3.

Приведенная выше команда переименует все файлы с расширением.mp3 в текущем каталоге. Команда выведет на консоль только переименованные файлы. Чтобы действительно переименовать файлы, удалите флаг -n.

Модификатор 's' указывает на замену. Первая часть подстановки — это регулярное выражение для сопоставления текста в имени файла. Вторая часть — замещающий текст. Последний аргумент команды rename — шаблон глобуса, указывающий, какие файлы нужно переименовать

.
3
27.01.2020, 21:13

Теги

Похожие вопросы