bashでフォルダ内にある横長の画像ファイルだけ移動する

なんか限定的な用途ですが、表題まま。Stable Diffusionとかで絵をいっぱい作ってるとやりたいことがあるので。なおChatGPTに教えてもらった模様。

目次

環境

  • bash
  • imagemagick

スクリプト

カレントディレクトリにある横長画像をすべてlandscapeフォルダにぶちこむ。

#!/bin/bash

# landscapeフォルダが存在しない場合は作成する
if [ ! -d "landscape" ]; then
  mkdir landscape
fi

# カレントディレクトリにある画像ファイルについて、横のサイズが縦のサイズよりも大きいものをlandscapeフォルダに移動する
for file in *.{jpg,jpeg,png,gif}; do
  width=$(identify -format '%w' "$file")
  height=$(identify -format '%h' "$file")
  if [ "$width" -gt "$height" ]; then
    mv "$file" landscape/
  fi
done

gtなのでsquare形状は移動しない。squareも移動させたいならgeにする。またltないしleにしたら今度は縦長だけ井戸させられるけどそれだったらフォルダ名も変えたほうがいいね。

ワンライナも教えてもらったけどうまく動かんかった。まぁ個人用スクリプトに入れてPATH通したほうがいいかなと思う。

本サイトはUXを悪くするevilなGoogle広告を消しました。応援してくださる方は おすすめガジェット を見ていってください!
よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次