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
行が空白ではなくタブで始まることを確認してください。)