やりたいこと
wget -r で自分が公開しているサイトの全データをダウンロードしたのだが、その中から写真のみを相対パスでピックアップしたい。
構造の例
. | -- hoge | | -- hoge.html | | -- hoge.png | | -- hoge2.png | -- foo | | -- foo.png | | -- foo.html | -- test.png
特定のディレクトリ内での特定の拡張子を選ぶ
ls *.png
とすることで、test.png は取得できる
再帰的にtreeを下っていって検索したい
ls -R
とやると全てのディレクトリを調べてくれるとのことだが、
ls -R *.png > ls: cannot access '*.png': No such file or directory
と怒られてしまった。
ls -R をパイプで繋ぐ
そこで、他のコマンドを使って加工してやることにした
とりあえずgrep
ls -R | grep .png > hoge.png > hoge2.png > foo.png
これだと、ファイル名しか表示されないらしい。
今欲しいのは相対パスなので、もう一回 ls -R を眺めてみる
ls -R > .: > foo hoge test.png > > ./foo: > foo.html foo.png > ./hoge: > hoge.html hoge.png hoge2.png
どうやら、ファイル名の上にディレクトリ名が表示されてるらしい。
ここからawk 使ったらいけるじゃんと思い、格闘を続けること30分
あとは、find で探してあげるだけ
ls -R | grep .png | xargs -I@ find . -name @
PS:
find -name *.png
でいいじゃん