Curl

從文件文本中過濾多個 URL

  • May 11, 2020

我在文件 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 儲存到一個新文件中。

這可能不是最好的,但試試這個:

創建一個文件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

引用自:https://unix.stackexchange.com/questions/585577