簡単な質問のようですが、最後にスクリプトを書いてから長い時間が経ちました。
サーバーから多数のイメージファイルをダウンロードしてから、イメージファイル名に基づいてクリーンアップする必要があります。この場合、イメージファイルはページなので、章のディレクトリに移動する必要があります。
画像ファイル名の例は「0080-002.png」と同じです。
0080 =
章 002 = ページ番号
したがって、ファイルが「0080-***.png」の場合、「chapter-80」ディレクトリに移動します。
これが私が今まで持っているものです。
#!/bin/bash
mkdir BOOK
cd BOOK
mkdir chapter-{1..80}
wget SOME_URL/00{01..80}-0{1..90}.png
for file=$(ls | grep *.png | cut -c1-4) in ~/BOOK/ do
増分変数を使用しようとしましたが、
変数が "$file"なので、どうすればいいかわかりません。
- 経験がないので申し訳ありません。提案があれば、よろしくお願いします。
答え1
#!/bin/bash
url="SOME_URL"
dir="BOOK"
[ "$dir" ] && mkdir -p "$dir" || dir=.
# avoid cd in scripts
#cd BOOK
#mkdir chapter-{1..80}
# sure? this could take ages
wget "$url"/00{01..80}-0{1..90}.png -P "$dir"
# avoid parsing ls
for file in "$dir"/[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9].png
do
[ -f "$file" ] || continue
subdir="${file%/*}"
fname="${file##*/}"
chapt="$(printf 'chapter-%02.0f' "${fname%%-*}")"
# only existing chapter on need
mkdir -p "$subdir/$chapt"
mv "$file" "$subdir/$chapt"
done