如何让wget不覆盖/忽略文件?解决批量同名PDF下载问题
解决wget批量下载同名PDF时自动重命名的问题
嘿,我太懂你折腾2小时找不到解决方案的烦躁——批量下载100个同名的templates.pdf,wget要么直接跳过已存在的文件,要么直接覆盖,完全没法区分不同网站的文件对吧?别慌,这两个简单的脚本方法就能帮你自动生成templates1.pdf、templates2.pdf这类有序命名的文件:
方法一:用Bash循环+wget实现自动编号
首先把那100个目标网站的URL单独存到一个文本文件里(比如叫templates_urls.txt),每行放一个URL。然后在终端里运行下面的脚本:
# 初始化计数器,从1开始 count=1 # 逐行读取URL文件里的链接 while read -r url; do # 用wget下载并指定输出文件名,计数器自动递增 wget "$url" -O "templates$count.pdf" count=$((count + 1)) done < templates_urls.txt
解释下关键部分:
-r参数确保读取URL时不会忽略特殊字符(比如URL里的空格)-O参数强制wget把下载的内容保存为指定的文件名,这里结合计数器count实现自动编号- 每次循环后计数器
count加1,确保每个PDF文件名唯一
方法二:用curl替代wget(如果更习惯curl的话)
如果平时用curl更多,逻辑是一样的,只是换个命令:
count=1 while read -r url; do curl "$url" -o "templates$count.pdf" count=$((count + 1)) done < templates_urls.txt
-o 参数和wget的-O作用一致,都是指定输出文件名。
额外提示
如果你的400个网站列表里混着其他不同文件名的PDF,可以先把这100个templates.pdf的URL筛选出来单独处理,剩下的300个直接用普通wget -i all_urls.txt下载就行,这样不会影响其他正常命名的文件。
内容的提问来源于stack exchange,提问作者Συλχαν




