Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

wgetでHTMLのリンク切れをざっくりあぶり出すワンライナー

via. http://www.math.kobe-u.ac.jp/~kodama/tips-ruby-check-link.html

もうちょっとうまい方法ありそうだなぁと思いつつ、こんな感じで。

LC_ALL=C wget -nv --delete-after -m -k -p http://example.com/ &> tmp.log; grep -B1 "ERROR 404" tmp.log | grep http | sed -e "s/:$//g"

なんで一度tmp.logに落としてるかというと、上のコマンドだと「リンク先」を抽出するだけなので、その「リンク元」を調べるためです。
リンク元*候補*のざっくりした抽出は、リンク切れになったURLを使って、次のような感じで。まあ、『エラーになったURL』が呼び出される前の5つのURLを表示するだけなんですが。

grep -i http tmp.log | grep -vE "\.(gif|jpe?g|png|js|css)" | grep -B5 [URL]