ファイルテキストで複数のURLをフィルタリング

ファイルテキストで複数のURLをフィルタリング

urls.txt ファイルに URL のリストがあります。

curl可能であればを使用してインポートしようとすると、404エラーが発生したすべてのURLをインポートして新しいファイルにコピーしたいと思います。

たとえば、私のファイル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/

2行目でタイムアウトを変更できますTIMEOUT=3

関連情報