从文件文本中过滤多个 URL

从文件文本中过滤多个 URL

我在文件 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

相关内容