
URL 上のすべての .pdf ファイルのリストを見つけるためにスクリプトを使用しています。しかし、lynx ではファイル名のスペースに問題があるようです。スクリプトは次のとおりです。
lynx --dump http://www.somesite/here/ | awk '/http/{print $2} | grep pdf > ~/Desktop/links.txt
ファイル名に空白が含まれる .pdf があるまでは、これは期待どおりに動作します。Lynx は空白でファイル名を切り捨てるようです。これを防ぐ方法はありますか?
答え1
awk は (デフォルトで) フィールド区切り文字として空白を使用しますが、lynx はダンプされた URL 内の空白を空白としてレンダリングします。バグ レポートで提案したように、これを回避します。
lynx -listonly -dump http://www.somesite/here/ | \ awk '/\.pdf$/{ sub("^[ ]*[0-9]+.[ ]*","",$0); print}' > ~/Desktop/links.txt
コンテンツがUTF-8エンコードの場合、lynx脱出するテキスト(URLエンコードを解除します。%20
) で、この場合は空白が表示されます (名前の空白の数に応じて、awk では 2 つ以上のフィールドになります)。
このエスケープ解除はDebian向けに行われた#398274、2013 年 (つまり、Ubuntu 18.04 でその機能が利用可能になりました)。
追加する-listonly
オプションは、リストURL の。
複数のファイルタイプを検索する場合は、正規表現でサフィックスを代替としてリストすることができます。たとえば、次のようになります。
awk '/\.(pdf|odt|doc|docx)$/{ sub("^[ ]*[0-9]+.[ ]*","",$0); print}' > ~/Desktop/links.txt