0 votos

Iterar a través de una variedad de tamaños de imagen, y moverlos a una carpeta nueva

Así que hace un par de años una pregunta, sobre cómo encontrar una imagen de dimensiones específicas. El script funcionaba (y funciona) para mí! Pero ahora, quiero encontrar no solo una (1) dimensiones, pero 10 diferentes dimensiones. Y con mi configuración actual y el sistema, y la iteración de una de las dimensiones específicas tarda aproximadamente una (1) hora.

He multipel ejecutables del mismo script, pero me ejecutan una después de la otra ./delete180x180images && ./delete800x600images y así sucesivamente.

Es posible comparar las dimensiones de la imagen contra una matriz? ejemplo DIMENSIONS=('120x120' '269x360' '360x269'), y si hay una coincidencia, mover ese archivo?

Este es el script de mi pregunta anterior que uso actualmente:

#!/bin/bash
targetDir="$HOME/Pictures/iPhoto-bibliotek.photolibrary"

HEIGHT=450
WIDTH=600

echo -e "Scanning \033[0;32m$targetDir\033[0m"
find $targetDir -type f \( -iname \*.jpg -o -iname \*.png -iname \*.bmp -iname \*.jpeg \) 2>/dev/null | \
while read -r filename; do
    hw="$(sips -g pixelHeight -g pixelWidth "$filename" 2>/dev/null)"
    h="$(awk '/pixelHeight/{print $2}'<<<"$hw")"
    w="$(awk '/pixelWidth/{print $2}'<<<"$hw")"
    if [[ $h -eq $HEIGHT ]] && [[ $w -eq $WIDTH ]]; then
        echo mv "$filename" $(pwd)/120x120images
    fi
done

1voto

#!/bin/bash
targetDir="$HOME/Pictures/iPhoto-bibliotek.photolibrary"

echo -e "Scanning \033[0;32m$targetDir\033[0m"
find $targetDir -type f \( -iname \*.jpg -o -iname \*.png -iname \*.bmp -iname \*.jpeg \) 2>/dev/null | \
    while read -r filename; do
        hw="$(sips -g pixelHeight -g pixelWidth "$filename" 2>/dev/null)"
        h="$(awk '/pixelHeight/{print $2}'<<<"$hw")"
        w="$(awk '/pixelWidth/{print $2}'<<<"$hw")"

        case ${h}x${w} in
            450x600) echo mv "$filename" $(pwd)/120x120images
                     ;;
            120x120) echo mv "$filename" $(pwd)/120x120images
                     ;;
            269x360) echo mv "$filename" $(pwd)/120x120images
                     ;;
            *)       echo "$filename ignored"
                     ;;
        esac
done

Se pueden añadir otras dimensiones de la misma manera, o cambiar el directorio de destino si es necesario. También, quite la echo una vez que funciona.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X