Scripting

使用萬用字元優雅地將數千個 epub 文件轉換為 mobi

  • September 20, 2021

我正在為 1000 個文件執行以下命令:

ebook-convert <name-of-first-file>.epub <name-of-first-file>.mobi
ebook-convert <name-of-second-file>.epub <name-of-second-file>.mobi

顯然,與其手動對 1000 個文件執行此操作,不如為這項工作編寫一個 bash 腳本。

我想知道在 Linux 中是否有更簡單的方法來做這樣的事情,一個看起來像的小命令

ebook-convert *.epub *.mobi

您能否以類似的方式使用萬用字元,適用於上述場景?

您不能直接使用萬用字元執行此操作,但for循環可以讓您到達那裡:

for epub in ./*.epub; do ebook-convert "${epub}" "${epub%.epub}.mobi"; done

Zsh 支持這種循環的更優雅的形式

如果您的文件名不包含空格字元,並且通常可以由 Make 和 shell 安全地處理,則可以使用 GNU Make,而不是 shell 腳本;把它放在一個Makefile

all: $(patsubst %.epub,%.mobi,$(wildcard *.epub))

%.mobi : %.epub
       ebook-convert ./$< ./$@

然後執行make,這將確保所有.epub文件都轉換為.mobi文件。您可以根據需要重複執行此程序以更新文件 - 它只會建構失去或比源文件舊的文件。(確保該ebook-convert行以製表符開頭,而不是空格。)

引用自:https://unix.stackexchange.com/questions/669449