我有一个9000网址列表,要废弃到一个file.txt中,保留与url列表中的writed相同的dir结构。
每个网址由http://domain.com/ $ dir / $ sub1 / $ ID / img_ $ ID.jpg组成,其中$ dir和$ sub1是0到9之间的整数
我试过了
wget -i file.txt
但是我需要在同一个本地目录中使用任何img_ $ ID.jpg,所以我在root中获取任何文件,从而丢失了$ dir /%sub1 / $ ID文件夹结构。
我认为必须编写一个
的脚本mkdir -p $dir/$sub1/$ID
wget -P $dir/$ #Correcting a typo in the message i left the full path pending, it was the same as previous mkdir command => "wget -P $dir/$sub1/$ID"
对于file.txt中的每一行,但我不知道从哪里开始。
答案 0 :(得分:0)
我认为带有一些字符串处理的简单shell循环应该对你有用:
while read line; do
line2=${line%/*} # removing filename
line3=${line2#*//} # removing "http://"
path=${line3#*/} # removing "domain.com/"
mkdir -p $path
wget -P$path $line
done <file.txt
(SO&#39编辑器错误地解释了表达式中的#
并将其余字符串的颜色标记为评论 - 请不要介意。实际的评论是非常正确的。)< / p>
请注意,wget
命令与您描述的不同(wget -P $dir/$
),而是看起来更正确(wget -P $dir/$sub1/$ID
)。如果您坚持使用您的版本,请说明终端$
是什么意思。
此外,出于调试目的,您可能希望在运行实际脚本(复制文件)之前验证处理 - 您可能会这样做:
while read line; do
echo $line
line2=${line%/*} # removing filename
echo $line2
line3=${line2#*//} # removing "http://"
echo $line3
path=${line3#*/} # removing "domain.com/"
echo $path
done <file.txt
您将看到所有字符串处理步骤,并确保生成的路径正确。