다음과 같은 4개 필드(id1, id2, id3, 파일 이름)가 있는 CSV가 있습니다.
2,2314,78,/image/1289.jpg
1,19825,179,/image/01288.jpg
2,2585,2281,/image/01287.jpg
3,35879,82,/image/01286.jpg
이미지에는 공통 URL 끝점이 있습니다.
http://example.com/assets/?mediafile=
마지막 열은 이미지 URL의 유일한 부분입니다.
각 이미지를 다운로드하려고 합니다. 각 이미지의 이름은 처음 3개 필드를 기반으로 합니다.
id1은 항상 1자리입니다.
id2는 실제로 앞에 0이 있는 5자리입니다(따라서 2314는 02314가 되어야 합니다).
id3은 실제로 4자리입니다(78은 0078이 됩니다).
그래서 총 10자리 코드가 있습니다. 따라서 첫 번째 이미지 이름은 2023140078.jpg 여야 합니다.
단일 파일을 수동으로 다운로드하려면 다음을 수행합니다.
wget -O 2023140078.jpg http://example.com/assets/?mediafile=/image/1289.jpg
또한 어떤 종류의 상태나 오류 코드를 해당 줄이나 오류 로그에 다시 쓸 수 있다면 좋을 것입니다.
답변1
awk -F, '{printf("%d%.5d%.4d %s\n",$1,$2,$3,$4)}' input.csv | while read newfile filename
do
wget -O "${newfile}.jpg" http://example.com/assets/?mediafile=${filename}
done
답변2
쉼표 로 설정 IFS
하고 루프를 사용하여 while
파일을 입력으로 사용하여 4개의 변수를 읽을 수 있습니다.
IFS=','
while read c1 c2 c3 c4; do
wget -O "$(printf "%d%05d%04d.jpg" "$c1" "$c2" "$c3")" "http://example.com/assets/?mediafile=${c4}"
done < file.txt