画像を縦横比で並べ替えてから使いたいです。多目的乗用車それらを探索しながら、Googleからいくつかのコードを取得しました。
identify * | gawk '{split($3,sizes,"x"); print $1,sizes[1]/sizes[2]}' | sed 's/\[.\]//' | sort -gk 2
これは出力です:
28.webp 0.698404
1.webp 0.699544
27.webp 0.706956
10.webp 0.707061
25.webp 0.707061
9.webp 0.707061
2.webp 0.707241
22.webp 1.41431
23.webp 1.41431
24.webp 1.41431
その後、必要に応じていくつかの調整をしました。
identify * | gawk '{split($3,sizes,"x"); print $1,sizes[1]/sizes[2]}' | sed 's/\[.\]//' | sort -gk 2 | gawk '{print $1}' | mpv --no-resume-playback --really-quiet --playlist=-
動作しますが、完璧ではありません。スペースを含むファイル名を処理できないため、特にWebP形式を処理する場合はidentify
遅すぎます。また、オプションがあるので、この出力を得るために使用したいのですが、処理方法がわかりません。誰でも助けることができますか?exiftool
exiftool
-r
exiftool
exiftool -r -s -ImageSize
答え1
わかりませんが、シェルmpv
内のzsh
いくつかの基準(縦横比など)でファイルのリストを並べ替えるには、o+function
glob修飾子を使用して拡張から返された情報に基づいてglobを並べ替えることができますfunction
。
たとえば、
by_aspect_ratio() REPLY=$(
exiftool -q -if 'printf "%d", $ImageWidth*1e8/$ImageHeight;0' -- $REPLY
)
print -rC1 -- *.webp(no+by_aspect_ratio)
縦横print
比(列のaw)に基づいてソートされたファイルのリスト。webp
r
1
C
以下を使用できます。
your-image-viewer -- *.webp(no+by_aspect_ratio)
ソートされたファイルのリストをお気に入りの画像ビューアに渡します。
*.webp
再帰的にファイルを見つけることに**/*.webp
置き換えられました。webp
または、GNUユーティリティを想定し、質問の最新の編集に従ってシェルを使用してくださいexiftool
。-r
exiftool -r -ext webp -q -if '
printf "%g\t%s\0", $ImageWidth/$ImageHeight, "$directory/$filename";0' . |
sort -zn |
cut -zf2- |
xargs -r0 your-image-viewer