如何使用 wget 输入文件和文件名

如何使用 wget 输入文件和文件名

我有一个文本文件,其中包含 10,000 个 URL,每个 URL 都有一个唯一编号,我想将文件保存为该编号。每行都有一个 10 个字符的代码,然后是要检索的图像的 URL。我如何让输入文件使用前 10 个字符作为 wget 文件名?

这是输入文件的示例: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将会获取文件但不获取前面的唯一编号。

我希望t29123q8m19.jpg(第一行)保存为x100083590.jpg

如果有更好的方法来写出输入文件,比如先用 URL,那么我也可以这样做,但我永远不会知道第一个字段的长度。现在前 10 个字符将始终是我想要将 wget 图像保存为的内容。

编辑 这是在 Windows 环境中完成的。

答案1

使用以下批处理文件:

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

答案2

在 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

在 Windows 下,我们可以这样做:

 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
 )

答案3

使用以及shellcygwingit-bash):

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

相同,但是多行版本:

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

相关内容