wgetコマンド

wgetは「ダブルゲット」と読むらしい

Edit

wget(ダブルゲット)コマンドとは

  • HTTP、HTTPS、FTPのいずれかのプロトコルで提供されるファイルをネットワーク経由でダウンロードするコマンド
  • curlコマンドでも同じことができるが、wgetコマンドは再帰的にファイルをダウンロードすることができる

よく使うオプション

※ 日常生活でwgetコマンドを使うときにこのリストに載っていないオプションを使った場合、その都度更新する予定

オプション 機能
-r 再帰的にファイルを取得する
-l <num> <num>階層目までクローリング対象にする(5階層がデフォルト)
-A <extension 1>, <extension 2>, …, <extension n> ダウンロードするファイルの拡張子を指定する
-R <extension 1>, <extension 2>, …, <extension n> ダウンロードしないファイルの拡張子を指定する
-nc 既に取得しているファイルはダウンロードしない
-P <directory name> <directory name>を保存先のディレクトリとして指定する

使用例

ファイルを取得する元のウェブサイトは 阿部 寛のホームページ を使用する

画像を保存する

  • -rで再帰的にファイルをダウンロードするようにする
  • -A jpgでjpgファイルのみダウンロードするようにする
  • -P imagesでimagesというディレクトリにファイルを保存するようにする

実行するコマンド

$ wget -r -A jpg -P images http://abehiroshi.la.coocan.jp/

シェル芸

先ほどのコマンドを実行すると

images
└── abehiroshi.la.coocan.jp
    ├── abe-top-20190328-2.jpg
    ├── essay
    ├── image
    │   ├── abehiroshi.jpg
    │   ├── drama.jpg
    │   ├── essay.jpg
    │   ├── movie.jpg
    │   ├── profile.jpg
    │   └── stage.jpg
    ├── kanri
    ├── movie
    │   ├── 30.jpg
    │   ├── amemasu.jpg
    │   ├── aoitori1.jpg
.
.
.
省略

となっている

imagesにjpgファイルのみ存在する状態にしたいときは、findとか、mvとかを組み合わせていくんじゃないかと思う…

もっといいやり方があったら教えて欲しいです

とりあえず

$ find images -type f -exec mv {} images \; && find images -type d -empty -delete

として、images以下に画像しか残らないようにして

open images/*

とすると男前な阿部寛の画像がいっぱいの天国が待ってます

クレジット

$ find images -name "*" -type f | xargs -I {} mv {} images && find images -name "*" -type d | sed -e 1d | xargs rm -rf

最初は紹介するシェル芸を上記のように紹介していましたが、よりいい方法を 未承諾広告※ shangli さんが提案してくれました。その方法を参考にシェル芸を改善しました。ありがとうございました。

comments powered by Disqus