Encuentre imágenes de un tamaño específico y muévalas a la papelera desde la terminal

Estoy clasificando imágenes en una biblioteca de imágenes un poco grande, y las miniaturas de la antigua biblioteca de iPhoto todavía están allí. Y necesito eliminarlos para mejorar la velocidad de clasificación de las imágenes.

Encontré esta respuesta aquí para Linux, pero ¿qué hay de macOS? ¿Hay alguna forma de buscar una carpeta, recursivamente, y determinar si la imagen *.jpg, *.png, *.bmp, *.jpegtiene el W360 y el H270?

Ejecutando Sierra 10.12.4

Puede instalar imagemagicko diseñar un algoritmo usando mdls. Algo como mdls -raw -name kMDItemPixelWidth filete daría el ancho del archivo de imagen.

Respuestas (1)

Aquí hay un bash script de ejemplo que puede lograr el objetivo de forma nativa, sin necesidad de instalar nada.

#!/bin/bash

targetDir="$HOME/Pictures"

find "$targetDir" -iname '*.jpg' -o -iname '*.png' -o -iname '*.bmp' -o -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 270 ]] && [[ $w -eq 360 ]]; then
        echo rm "$filename"
    fi
done

Todo lo que necesita hacer es configurar la targetDir variable en el punto de inicio donde desea que se vea el find comando . El valor predeterminado es la carpeta Imágenes dentro de su carpeta Inicio.

Nota: En la secuencia de comandos de ejemplo, el echo comando debe eliminarse para
rm "$filename"que los archivos se eliminen realmente y está allí para que pueda probar primero la salida de la secuencia de comandos en cuanto a qué archivos se eliminarán. Por supuesto, puede optar por eliminarlo sin probarlo e intentarlo, si está seguro de que desea eliminar cualquier archivo .jpg, .png, .bmp o .jpeg con dimensiones de 270 píxeles de alto por 360 píxeles de ancho dentro de el targetDir_

También tenga en cuenta que, según el recuento total de archivos de las extensiones de archivo de destino, la ejecución de este script puede tardar un tiempo en completarse. En mi sistema, encontró ~ 1000 archivos para eliminar de los 27500 archivos en mi carpeta Imágenes y tardó al menos de 5 a 10 minutos en completarse.

Dicho esto, ejecuté este script, tal como está escrito, y los únicos archivos además del archivo de prueba que creé con las dimensiones de destino, todos los demás archivos encontrados en una ubicación específica dentro de mi paquete de la biblioteca de iPhoto en la carpeta Miniaturas. Entonces, ¿no sería más fácil ingresar al paquete y eliminar el contenido en Finder? Es decir, ¡si en realidad solo quieres deshacerte de esas miniaturas!


Si no sabe cómo usar el script , haga lo siguiente en la Terminal:

touch delete270x360images
open delete270x360images

Copie y pegue el código de secuencia de comandos de arriba en el delete270x360imagesdocumento abierto, modifíquelo según sea necesario o desee y luego guarde y cierre.

En Terminal, hazlo ejecutable:

chmod u+x delete270x360images

Ahora, para usarlo en la Terminal, escriba lo siguiente y luego presione enter.

./delete270x360images

Espere a que se complete.