2

Я хочу использовать следующую команду для преобразования электронных книг из формата epub в формат mobi:calibre-convert books/*.epub books/*.mobi

но я хочу сохранить одно и то же имя файла для всех файлов. Поэтому book1.epub создаст book1.mobi book2.epub создаст book2.mobi после конвертации. это выполнимо в командной строке? или я должен написать скрипт bash?

1 ответ1

6
( cd books && for file in *.epub; do calibre-convert "$file" "${file%epub}mobi"; done )

Основной трюк здесь - это ${file%epub} что означает « $file с удаленным epub в конце». Таким образом, ${file%epub}mobi переводит расширение.

Подоболочка ((…)) используется так

  • текущий рабочий каталог основной оболочки остается неизменным
  • и переменная file в основной оболочке не изменяется.

Любой каталог, который соответствует *.epub в books/ также будет передан в calibre-convert . Это зависит от инструмента, что он будет делать с каталогом. Вероятно, у вас нет такого каталога там; но если вы делаете, будьте осторожны.

Примечание: я вообще не знаю, как calibre-convert ; синтаксис в моей команде просто получен из вашей команды.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .