Cách sử dụng wget với tệp đầu vào và tên tệp


1

Tôi có một tệp văn bản chứa 10.000 url với một số duy nhất tôi muốn lưu tệp dưới dạng. Mỗi dòng có mã 10 ký tự, sau đó URL của hình ảnh cần truy xuất. Làm cách nào để tạo tệp đầu vào sử dụng 10 ký tự đầu tiên làm tên tệp wget?

đây là một ví dụ về tệp đầu vào: input.txt

x100083590http://image.allmusic.com/13/adg/cov200/drt200/t291/t29123q8m19.jpg
b200149548http://ecx.images-amazon.com/images/I/41DoH%2BAWKEL.jpg
z100151855http://image.allmusic.com/13/amg/cov200/dri400/i450/i45035hxdrb.jpg
p400171646http://ecx.images-amazon.com/images/I/61cH4n34IhL.jpg

wget -i input.txt sẽ nhận được tệp nhưng không phải với số duy nhất trước đó.

tôi muốn t29123q8m19.jpg (dòng đầu tiên) được lưu dưới dạng x100083590.jpg

Nếu có cách tốt hơn để viết ra tệp đầu vào, hãy nói với URL trước, sau đó tôi cũng có thể làm điều đó, nhưng tôi sẽ không bao giờ biết độ dài của trường đầu tiên. Ngay bây giờ 10 ký tự đầu tiên sẽ luôn là những gì tôi muốn lưu hình ảnh wget như.

Chỉnh sửa Điều này đang được thực hiện trong một môi trường windows.

Câu trả lời:


2

Sử dụng tệp bó sau:

@echo off
setlocal enabledelayedexpansion
for /f %%l in (Input.txt) do (
    set line=%%l
    wget -O !line:~0,10!.jpg !line:~10!
)

5

Trong linux.

 while read p; do
   newname=${p:0:10} # first 10 chars
   url=${p:10} # remaining chars after the 10th
   wget $url -O $newname.jpg  #get url and output to new filename
 done < input.txt

Dưới cửa sổ, chúng tôi có thể làm:

 SETLOCAL ENABLEDELAYEDEXPANSION
 for /f %%p in (input.txt) do (
    SET p1=$$p
    SET newname=!p1:~0,10!
    SET url=!p1:~10!
    wget %url% -O %newname%.jpg
 )

Cảm ơn bạn đã trả lời Prompt Paul. Làm thế nào một người sẽ làm điều đó trong Windows?
Matt

@Matt Đã thêm cửa sổ, cho tôi biết nếu bạn tìm thấy bất kỳ lỗi nào
Paul

Đây là lỗi tôi gặp phải khi chạy tệp này trong một tệp bó: --2012-11-20 15: 19: 44-- http: // ~ 10 / Giải quyết ~ 10 ... không thành công: Không có bản ghi dữ liệu loại được yêu cầu. wget: không thể giải quyết địa chỉ máy chủ `~ 10 '
Matt

@Matt Ok thử cái này. Cửa sổ ngu ngốc :)
Paul

Cùng một lỗi. Giải pháp của Karan ở trên gần như giống nhau và đang hoạt động. Tôi vẫn cảm ơn sự giúp đỡ và đóng góp của bạn.
Matt

0

Sử dụng shell ( cygwin hoặc là git-bash ):

file=/PATH/TO/INPUT_FILE.txt
awk '{print "wget \047" substr($0, 11) "\047 -o " substr($0, 0, 10) ".jpg"}' "$file | sh

cùng, nhưng phiên bản nhiều dòng:

file=/PATH/TO/INPUT_FILE.txt
awk '
    {
        print "wget \047" substr($0, 11) "\047 -o " substr($0, 0, 10) ".jpg"
    }
' "$file | sh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.