我在文件 urls.txt 中有一个 URL 列表。
如果可能的话,当我尝试使用 获取它们时,我希望获取所有给出 404 错误的 URL curl
,并将它们复制到新文件中。
例如我的文件 urls.txt 中的 URL:
mysite.com/page1
mysite.com/page2
mysite.com/page3
mysite.com/page4
mysite.com/page5
...
mysite.com/page100
...
mysite.com/page1000
所以我想尝试获取每一个,如果获取失败并出现错误 404,我想将失败的 URL 存储到一个新文件中。
答案1
这可能不是最好的,但尝试一下:
创建一个文件urlcheck.sh
,然后授予执行权限。或者只需输入以下命令:
touch urlcheck.sh
chmod +x urlcheck.sh
将以下脚本粘贴到urlcheck.sh
#!/bin/bash
TIMEOUT=3
if [ ! -f output404.txt ]; then
touch output404.txt
fi
while IFS= read -r line; do
OUT_URL=$(curl -I $line 2>&1 -m $TIMEOUT| awk '/HTTP\// {print $2}')
if [ "$OUT_URL" == "404" ]; then
echo $line >> output404.txt
echo "$line written to output404.txt"
else
echo "$line $OUT_URL"
fi
done < "$1"
并保存。
运行脚本:
./urlcheck.sh urls.txt
然后,检查output404.txt
脚本生成的。
请注意每行中的 url 必须是可读取的 url,curl
例如https://unix.stackexchange.com/
.
您可以更改第二行的超时时间TIMEOUT=3
。