ワイルドカードを使用して何千ものepubファイルをmobiにエレガントに変換する

ワイルドカードを使用して何千ものepubファイルをmobiにエレガントに変換する

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

上記のシナリオに適用されるのと同様の方法でワイルドカードを使用できますか?

ベストアンサー1

ワイルドカードを使用してこれを直接行うことはできませんが、forループを使用できます。

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

Zshはこのループのよりエレガントなフォーマットをサポートしています。

ファイル名にスペース文字が含まれておらず、通常Makeとシェルで安全に処理できる場合は、シェルスクリプトの代わりにGNU Makeを使用できますMakefile

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

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

その後、実行すると、makeすべての.epubファイルが1つのファイルに変換されます.mobi。ファイルを更新するために、必要に応じてこのコマンドを繰り返し実行できます。このコマンドは、欠落しているファイルまたはソースファイルより古いファイルのみをビルドします。 (ebook-convert行が空白ではなくタブで始まることを確認してください。)

おすすめ記事