간단한 질문인 것 같지만 마지막으로 스크립트를 작성한지 오랜 시간이 흘렀고, bash 스크립트를 처음 접하는 초보자라 죄송합니다.
서버에서 많은 수의 이미지 파일을 다운로드한 다음 이미지 파일 이름을 기준으로 정리해야 합니다. 이 경우 이미지 파일은 페이지이므로 챕터인 디렉터리로 이동해야 합니다.
이미지 파일 이름의 예는 "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