Curl
從文件文本中過濾多個 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 儲存到一個新文件中。
這可能不是最好的,但試試這個:
創建一個文件
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
。